一个IDispose对象可以不具有可用的Dispose方法
我使用的一个项目FileHelpers,类MultiRecordEngine
public sealed class MultiRecordEngine
: EventEngineBase<object>, IEnumerable, IDisposable
此类实现IDisposable
,但没有公共的Dispose方法...
MultiRecordEngine eng = null;
eng.Dispose(); // <---- Results in compilation error
在GitHub上检查这个类的代码,我可以在这里看到第913行显式实现的方法:
void IDisposable.Dispose()
{
Close();
GC.SuppressFinalize(this);
}
所以... 为什么我不能调用这个方法? 这是否打算,如果是这样,这是一个好习惯,在什么情况下?
它是明确实现的,所以你需要转换为IDisposable
:
((IDisposable)eng).Dispose();
显式实现的成员只能通过接口访问,而不能通过实现类访问。
首先,您可以通过转换为IDisposable
来调用该方法:
((IDisposable)eng).Dispose();
您也可以在使用块中正确使用该类:
using (MultiRecordEngine eng = new MultiRecordEngine())
{
..
}
链接地址: http://www.djcxy.com/p/54517.html
上一篇: Can an IDispose objects not have an available Dispose method