1
5
我会说不,它不应该共享国旗。共享标志会为失败创造机会,更好的封装可以防止失败。 例如,考虑在最基本类上具有只读释放属性的场景。仅在基类的Dispose(Disposing)方法中将backing字段设置为true。这意味着,只有在调用基类Dispose时,被释放的属性才能返回true(当然,除了邪恶的反射)。这允许基类提供一个可执行的契约。 现在考虑下相反的情况,这里有一个受保护的setter。任何类现在都可以在不处理任何内容的情况下任意地将已处理的属性设置为true。这为Dispose创造了一个机会,使其在未处理任何内容时返回true。 我会选择第一个选项,因为它提供了最具执行力的合同。 |
2
0
我建议在具有公共getter和受保护的setter的基类上拥有已释放的属性。 |
3
0
在这种情况下,当类被释放时,您的方法应该做一些不同的事情,例如引发异常,我将为读取基类上私有字段的基类创建一个只受保护的getter属性。这样,您就可以让任何继承者知道他是否能够执行操作。 然后,为了知道某个类是否已经被释放到它自己的Dispose方法中(例如:为了避免两次释放资源),我认为使用私有标志更好地实现清晰性和维护性。 |
4
0
除了Jaredpar的回答之外,我还要补充一点,并不总是有必要
例如,需要
这可以安全地运行多次,而无需调用
我发现这比不经常实现IDisposable更常见,我想不起来需要单独的
所以这对于派生类来说不太可能有用,即使它是一个安全的想法(正如Jaredpar解释的那样,它不是)。 |