我有這個領域類:爲什麼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