Реализуйте IDisposable
У меня есть следующий класс:
public class MyClass : IDisposable
{
private WebServiceHost m_WebServiceHost;
// Members
public void Dispose()
{
m_WebServiceHost // how do I dispose this object?
}
}
WebServiceHost
инвентарь IDisposable
, но это не имеет Dispose
метод.
Как мне реализовать Dispose()
?
2 ответа
Учитывая, что он использует явную реализацию интерфейса, мне не ясно, чего они хотят, но вы можете:
public class MyClass : IDisposable
{
private WebServiceHost m_WebServiceHost;
// Members
public void Dispose()
{
((IDisposable)m_WebServiceHost).Dispose();
}
}
Я предполагаю, что они предпочли бы, чтобы вы просто позвонили Close()
на этом, но я пока не могу подтвердить это документацией.
Сделай это так:
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);
}
}