मैं उन लोगों के लिए एक थर्ड पार्टी एपीआई डीएलएल, ब्लूमबर्ग एसएपीआई का उपयोग कर रहा हूं जो इसे जानते हैं/इसका उपयोग करते हैं। उपरोक्त सभीएक निपटान विधि कैसे छुपाया जा सकता है?
[ComVisible(true)]
public interface IDisposable
{ //this is from mscorlib 2.0.0.0 - standard System.IDisposable
void Dispose();
}
public abstract class AbstractSession : IDisposable {}//method signatures and comments
public class Session : AbstractSession {} //method signatures and comments (from assembly metadata)
है से F12/VS2010 में परिभाषा/वस्तु ब्राउज़र पर जाएँ:
यहाँ मेरी समस्या है। अब जब मैं कोशिश करते हैं और इस कोड का उपयोग:
(new Session()).Dispose();
यह संकलन नहीं करता है ... मानक संकलक त्रुटि - कोई परिभाषा/विस्तार विधि 'फेंक' पाया जा सकता है।
यह कैसे संभव है ??? उन्होंने एक असेंबली बनाई है और स्पष्ट रूप से इसे मेटाडेटा संपादित किया है?
मैं अगर यह (बहिष्कार करने के लिए) को छिपाने के लिए एक सार्वजनिक विधि कानूनी तौर पर संभव है पता नहीं है ....
आरागघ! अच्छा। मैंने कभी भी स्पष्ट कार्यान्वयन का उपयोग नहीं किया था, इसलिए यह नहीं पता था कि इसका उपयोग करने के लिए आपको एक इंटरफ़ेस कास्ट चाहिए। धन्यवाद ! – Vivek
स्पष्ट इंटरफ़ेस कार्यान्वयन आमतौर पर आवश्यक नहीं है, लेकिन कुछ बार ऐसा अच्छा होता है, जैसे कि जब आप अपने साथी डेवलपर्स को कार्यान्वयन के बजाय इंटरफ़ेस द्वारा कोड करने के लिए मजबूर करना चाहते हैं। और कुछ बार जब आवश्यक हो, जैसे कि आपको दो अलग-अलग इंटरफेस को लागू करने की आवश्यकता होती है, जिसमें एक समान सदस्य हस्ताक्षर होता है जिसे आपको दो अलग-अलग तरीकों से लागू करने की आवश्यकता होती है। –
यूप। धन्यवाद। जैसा कि आपने उल्लेख किया है, आपको शायद स्पष्ट रूप से स्पष्ट रूप से उपयोग करने की आवश्यकता नहीं है जब तक कि विधि नाम संघर्ष नहीं कर रहे हैं, इसलिए यह पहली बार है जब मैंने इसे उत्पादन कोड में देखा था। आश्चर्य कीजिए कि डिस्पोज़ के साथ क्या हुआ! :) – Vivek