尽管在SO上有很多关于IDisposable
的问答,但我还没有找到答案:
我通常遵循这样的做法:当我的一个类拥有IDisposable
对象时,它还将实现IDisposable
并在拥有的对象上调用Dispose
。但是最近我遇到了一个类,该类显式实现了IDisposable
,从而阻止了我直接调用Dispose
强制我强制转换它,这使我感到烦恼和不必要。
那么问题来了:为什么以及何时要使用IDisposable
的显式接口(interface)实现?我知道明确地实现接口(interface)是有充分的理由,但是对于IDisposable
来说,原因对我来说并不十分清楚。
最佳答案
我要说的是,除非您有其他等效方法(例如Close),否则要有一个IDisposable.Dispose
的显式实现,这是不寻常的。
在这种情况下,您的包装器类可以调用Close而不是强制转换。
一个示例是Framework WebResponse类。有趣的是,.NET 4中有一个公共(public)的Dispose方法,因此也许微软现在已经决定明确的实现可能不是一个好习惯。
CLR安全团队的设计工程师Shawn Farkas在MSDN magazine中写道:
关于c# - 明确实现IDisposable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5577252/