В момента работя върху коригирането на C# кодова база, която няма добър модел на използване на Dispose.
Това е голяма кодова база, изискваща ресурси и използва много персонализирани неуправляеми c++ библиотеки на ниско ниво.
Разбирам добре модела на изхвърляне. Прекарах известно време в разбиране на статията, която според мен е златен стандарт по въпроса: Статия за изхвърляне на Джо Дъфи
В опит да сведем до минимум дублирането на код, обмисляхме някои помощни класове за изхвърляне и затова въпросът ми:
Ако базов клас имплементира стандартен модел на Dispose, трябва ли той да позволи споделянето на неговия флаг за dispose, т.е. маркирани като защитени?
За да изясня, имам предвид, трябва ли да има само едно булево състояние в рамките на наследствена херархия, което определя дали екземпляр на обект е бил изхвърлен или трябва да има частно булево състояние на всяка стъпка от стълбата на наследяване?
Примерите в MSDN и в горната връзка задават флаг на всяко ниво, но никога не обясняват мотивите зад него. Двоен съм по въпроса, какви са вашите мисли и причини?