कारण यह है कि वे विधियां केवल आई-इंटरफ़ेस को लागू करने के लिए हैं और कक्षा 'सार्वजनिक इंटरफ़ेस को बढ़ाने के लिए नहीं हैं।
public class MyClass : IConvertible
{
// implementation
}
आप MyClass, परिवर्तनीय होने के लिए वास्तव में चाहते हो सकता है, तो आप तरीकों कि उम्मीद करने के इसके बारे में संदर्भ पारित कर सकते हैं IConvertible:
क्या मेरा मतलब है कि यदि आप निम्नलिखित है
public void DoSomethingWithConvertible(IConvertible conv)
लेकिन हो सकता है कि आप कनवर्ट विधियों का पर्दाफाश करने के लिए MyClass टाइप करने के चर नहीं चाहते हैं। आप बस MyClass के सार्वजनिक इंटरफ़ेस को उस विधि के लिए नहीं चाहते हैं, तो आप इंटरफ़ेस को स्पष्ट रूप से कार्यान्वित करें। यह दृष्टिकोण का पूरा विचार है। इसका मतलब यह है निम्नलिखित अनुमति दी है नहीं:
MyClass a = new MyClass();
a.Convert();
हालांकि, निम्नलिखित अभी भी अनुमति दी जा रही है:
MyClass a = new MyClass();
((IConvertible)a).Convert();
इसके पीछे पूरे विचार है कि यहां तक कि हम ठीक उसी उदाहरण का उपयोग कर रहे हालांकि, एक क्योंकि MyClass में विधि नहीं है। एक IConvertible के रूप में विधि है।इसके बारे में सोचें जैसे कि आप उदाहरण को विभाजित व्यक्तित्व की अनुमति दे रहे हैं।
आमतौर पर मैं प्रत्येक इंटरफ़ेस को पूर्ण रूप से लागू करना समाप्त करता हूं। हालांकि, बहुत विशिष्ट स्थितियां हैं जहां मैं ऊपर उल्लिखित कारणों के लिए स्पष्ट रूप से उन्हें लागू कर रहा हूं।
बीटीडब्ल्यू, महान प्रश्न के लिए धन्यवाद!
स्रोत
2011-09-01 10:06:48
आप वीएस में मेटाडेटा व्यू के बारे में बात कर रहे हैं और वास्तविक मेटाडेटा के बारे में नहीं। वास्तविक मेटाडाटा में स्पष्ट रूप से स्पष्ट इंटरफ़ेस कार्यान्वयन शामिल हैं। – CodesInChaos
स्पष्टीकरण –