我目前正在修复 ac# 代码库,它没有很好的 Dispose 使用模式。
它是一个大型代码库,它是一个资源要求高的代码库,它在低级别使用了许多自定义的非托管 c++ 库。
我对处置模式有很好的了解。我花了一些时间来理解我认为关于这个问题的黄金标准文章:Joe Duffy 的处置文章
为了尽量减少代码重复,我们一直在考虑一些 dispose 辅助类,所以我的问题是:
如果一个基类实现了一个标准的 Dispose 模式,它是否应该允许共享它的 Dispose 标志,即。标记为受保护?
为了澄清,我的意思是在继承层次结构中是否应该只有一个布尔状态来定义对象实例是否已被释放,或者在继承阶梯的每个步骤中是否应该有一个私有布尔值?
MSDN 和上述链接中的示例在每个级别都设置了一个标志,但从未解释其背后的原因。我对这个问题有两种看法,你的想法和理由是什么?