c# – 为什么我的IDisposable对象上的Dispose()方法不可用?

我有一个这个领域的课:
private WcfChannelFactory<IPrestoService> _channelFactory;

dispose()方法中,我这样做:

if (_channelFactory != null) { _channelFactory.dispose(); }

但这会产生错误

Cannot access explicit implementation of Idisposable.dispose

做了一些research之后,似乎我可以这样处理:

if (_channelFactory != null) { (_channelFactory as Idisposable).dispose(); }

我不明白两件事:

>为什么dispose()不可用? WcfChannelFactory< T>源自ChannelFactory< T>,它源自实现Idisposable的ChannelFactory.然而ChannelFactory没有dispose()方法.这怎么可能?
>如果我可以(应该?)只是在_channelFactory上调用Close(),为什么XML文档没有声明Close()也会调用dispose()?也许不会?这令人困惑.

解决方法

>由于dispose方法对Idisposable接口实现了明确性,因此只有在引用Idisposable类型时才能看到该方法.方法就在那里,但是当你有一个不同类型的引用时,你看不到它.它类似于私有方法只能从类本身的代码中看到,尽管它始终存在. > Close方法不会为此类调用dispose.该方法关闭工厂,它启动异步关闭过程.当Close方法退出时,关闭过程没有完成,因此此时无法处理对象.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...