加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:15:18 所属栏目:百科 来源:网络整理
导读:我有一个这个领域的课: private WcfChannelFactoryIPrestoService _channelFactory; 在Dispose()方法中,我这样做: if (_channelFactory != null) { _channelFactory.Dispose(); } 但这会产生错误: Cannot access explicit implementation of IDisposable.
我有一个这个领域的课:
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方法退出时,关闭过程没有完成,因此此时无法处理对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读