【发布时间】:2013-11-06 22:58:44
【问题描述】:
.NET 中一直让我感到困惑的一个领域就是何时实现 IDisposable 模式。
我使用 WSDL 创建了一个 SOAP Web 服务代理,它在 Component 基类上实现了 IDisposable:
public partial class WSDLGeneratedProxy : System.Web.Services.Protocols.SoapHttpClientProtocol
我创建了一种带有简化方法的外观接口,以便我可以隐藏服务代理交互,并使其实现 IDisposable:
public interface IServiceClient : IDisposable
我有一个 IServiceClient 的实现,并且该实现包含 WSDLGeneratedProxy 的一个实际成员
public class FacadeServiceClient : IServiceClient
{
private WSDLGeneratedProxy clientProxy;
}
所以我的问题是 - 我应该显式调用服务代理上的 Dispose 方法吗?这是正确的方法吗?
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if (clientProxy != null)
{
clientProxy.Dispose();
}
}
}
非常感谢任何建议或意见。
【问题讨论】:
-
处置静态生命周期对象是一件非常罕见的事情——您的意思是让
clientProxy成为静态对象吗? -
Doh,不,我只是在复制/粘贴我面前的一些代码。不 - 它不应该是静态的。
标签: c# .net web-services idisposable