Chr*_*Wue 14 .net c# idisposable explicit-interface
虽然IDisposable在SO上有相当多的问答,但我还没有找到答案:
我通常遵循这样的做法:当我的一个类拥有一个IDisposable对象时,它也实现IDisposable并调用Dispose拥有的对象.但是最近我遇到了一个IDisposable明确实现的类,因此阻止我直接Dispose强制我强制转换它,我觉得这很烦人且没必要.
所以问题是:为什么以及何时想要使用显式接口实现IDisposable?我知道明确地实现接口有完全正确和有效的理由但是对于IDisposable我来说不明确的原因.
Joe*_*Joe 15
我会说IDisposable.Dispose除非你有一个替代的等效方法(例如Close),否则有一个明确的实现是不寻常的.
在这种情况下,您的包装类可以调用Close而不是强制转换.
一个例子是WebResponseFramework <= V3.5中的类.有趣的是,在.NET 4中有一个公共的Dispose方法,所以微软现在可能已经决定明确的实现可能不是一个好的做法.
CLR安全团队的设计工程师Shawn Farkas在MSDN杂志上写道
虽然using块可以使用具有显式IDisposable实现的类,但我建议类永远不会以这种方式实现接口.如果您明确实现了IDisposable,那么在VisualStudio®中使用IntelliSense®探索对象模型的开发人员将不会注意到该对象具有Dispose方法
| 归档时间: |
|
| 查看次数: |
1819 次 |
| 最近记录: |