实现 IDisposable。
实现 IDisposable。
This question already has answers here:
我有一个以下的类:
public class MyClass : IDisposable { private WebServiceHost m_WebServiceHost; // Members public void Dispose() { m_WebServiceHost // how do I dispose this object? } }
WebServiceHost
实现了 IDisposable
接口,但它没有 Dispose
方法。
我该如何实现 Dispose()
方法?
admin 更改状态以发布 2023年5月23日
像这样做:
public class MyClass : IDisposable { private WebServiceHost m_WebServiceHost; // Often you have to override Dispose method protected virtual void Dispose(Boolean disposing) { if (disposing) { // It looks that WebServiceHost implements IDisposable explicitly IDisposable disp = m_WebServiceHost as IDisposable; if (!Object.RefrenceEquals(null, disp)) disp.Dispose(); // May be useful when debugging disp = null; } } // Members public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } }
鉴于它使用了显式接口实现,我不确定他们是否希望你这样做,但你可以:
public class MyClass : IDisposable { private WebServiceHost m_WebServiceHost; // Members public void Dispose() { ((IDisposable)m_WebServiceHost).Dispose(); } }
我猜他们更愿意你只是调用 Close()
方法,但我还不能从文档中证实这一点。