我经常在引用少量资源的简单类中使用一次性模式,但我从来没有在从另一个一次性类继承的类上实现这种模式,我开始对如何释放整个资源感到有些困惑。
我从一些示例代码开始:
public class Tracer : IDisposable
{
bool disposed;
FileStream fileStream;
public Tracer()
{
//Some fileStream initialization
}
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
if (fileStream != null)
{
fileStream.Dispose();
}
}
disposed = true;
}
}
}
public class ServiceWrapper : Tracer
{
bool disposed;
ServiceHost serviceHost;
//Some properties
public ServiceWrapper ()
{
//Some serviceHost initialization
}
//protected override void Dispose(bool disposing)
//{
// if (!disposed)
// {
// if (disposing)
// {
// if (serviceHost != null)
// {
// serviceHost.Close();
// }
// }
// disposed = true;
// }
//}
}
我真正的问题是:如何在我的 ServiceWrapper 类中实现一次性模式,以确保当我处理它的实例时,它会同时处理继承类和基类中的资源?
谢谢。
最佳答案
我已经看到这是通过几种方式完成的:
关于.net - 如何在继承自另一个一次性类的类中实现一次性模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2571594/