我正在开发一个特定类层次结构实现 IDisposable 的项目。
一些类还实现了一个 Finalize 方法( ~MyClass() )
一般来说,它看起来像这样:
public class BaseClass : IDisposable
{
}
public class SomeClass : BaseClass
{
~SomeClass()
{
Dispose();
}
Dispose()
{
// Do some stuff.
base.Dispose();
}
}
public class AnoterClass : SomeClass
{
~AnoterClass()
{
Dispose();
}
Dispose()
{
// Do some stuff.
base.Dispose();
}
}
我想知道处理对 Dispose 的调用的正确方法是什么,因为似乎这些对象是通过调用 Dispose() 来处理的,然后由于调用了 Finalize 方法而导致崩溃。
最好将标志保留在层次结构中的最低类(受保护的布尔处理),并在类层次结构的每个级别中检查它?
我发现每个可能的解决方案都需要一些代码重复,这不是我想要的。