.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();
}
}
}
非常感谢任何建议或意见。