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(); } 但这会产生错误:
做了一些research之后,似乎我可以这样处理: if (_channelFactory != null) { (_channelFactory as IDisposable).Dispose(); } 我不明白两件事: >为什么Dispose()不可用? WcfChannelFactory< T>源自ChannelFactory< T>,它源自实现IDisposable的ChannelFactory.然而ChannelFactory没有Dispose()方法.这怎么可能? 解决方法
>由于Dispose方法对IDisposable接口实现了明确性,因此只有在引用IDisposable类型时才能看到该方法.方法就在那里,但是当你有一个不同类型的引用时,你看不到它.它类似于私有方法只能从类本身的代码中看到,尽管它始终存在. > Close方法不会为此类调用Dispose.该方法不关闭工厂,它启动异步关闭过程.当Close方法退出时,关闭过程没有完成,因此此时无法处理对象.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |