Я работаю над проектом, в котором определенная иерархия классов реализует 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.
Лучше ли держать флаг в самом низком классе в иерархии (защищенный bool удален) и проверять это на каждом уровне иерархии классов?
Я считаю, что каждое возможное решение требует некоторого дублирования кода, а это не то, что мне нужно.
SafeHandle
и избегать финализаторов в вашем сложном графе объектов. - person CodesInChaos   schedule 20.10.2012