特定のクラス階層が 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() を呼び出すことによって破棄され、後で Finalize メソッドが呼び出されるためクラッシュするように見えるため、Dispose の呼び出しを処理する適切な方法を知りたいです。
階層の最下位クラス (保護された bool が破棄される) にフラグを保持し、クラス階層のすべてのレベルでそれを確認するのが最善ですか?
考えられるすべての解決策には、コードの重複が必要であることがわかりましたが、これは私が求めているものではありません。