Я часто использовал одноразовый шаблон в простых классах, которые ссылались на небольшое количество ресурсов, но мне никогда не приходилось реализовывать этот шаблон в классе, который наследуется от другого одноразового класса, и я начинаю немного запутываться в том, как освободить целые ресурсы.
Я начинаю с небольшого примера кода:
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, чтобы быть уверенным, что когда я буду располагать его экземпляром, он будет располагать ресурсами как в унаследованном, так и в базовом классе?
Спасибо.