我有这个领域类:为什么Dispose()方法在我的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>
,其源自ChannelFactory
,其实现IDisposable
。然而ChannelFactory
没有Dispose()
方法。这怎么可能?如果我可以(应该?)简单地调用
_channelFactory
Close()
,为什么不XML文档状态Close()
会也呼吁Dispose()
?也许它不会?这很混乱。
所以我怎么处置_channelFactory'的'?我应该调用'Close()'吗?我应该叫'Dispose()'? – 2013-05-08 01:52:54
@鲍勃,没关系。误解你原来的问题。看起来你正在实现你自己的一次性模式。 – 2013-05-08 01:53:39
@AnthonyPegram我不能。该方法返回'_channelFactory'。消费者正在使用'使用'来封装这个调用,所以我们的课程需要实现'IDiposable'并添加它。 – 2013-05-08 01:55:11