मैं इस क्षेत्र के साथ एक वर्ग है:मेरे आईडीस्पोजेबल ऑब्जेक्ट पर निपटान() विधि क्यों उपलब्ध नहीं है?
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()
कह सकते हैं, क्यों नहीं एक्सएमएल प्रलेखन राज्य किClose()
भीDispose()
फोन करेगा करता है? शायद यह नहीं होगा? यह भ्रामक है।
तो कैसे मैं '_channelFactory' के निपटान करना चाहिए? क्या मुझे 'बंद() 'कॉल करना है? क्या मुझे 'निपटान() 'कॉल करना है? –
@ बॉब, कभी नहीं। अपने मूल प्रश्न को गलत समझें। ऐसा लगता है कि आप अपना खुद का डिस्पोजेबल पैटर्न लागू कर रहे हैं। –
@ एंथनी पेगम मैं नहीं कर सकता। विधि '_channelFactory' लौटाती है। उपभोक्ता कॉल को 'उपयोग' में लपेट रहा है, इसलिए मेरी कक्षा को 'आईडीपोसेबल' और इसके डिप्लोस को लागू करने की आवश्यकता है। –