2012-04-15 12 views
6

मैं वर्तमान में अपने एमएस 70-515 परीक्षा के लिए अध्ययन कर रहा हूं। प्रथाओं में से एक लेखक लेखक को अंतर्निहित और स्पष्ट दोनों इंटरफ़ेस लागू करता है। स्पष्ट कार्यान्वयन सिर्फ अंतर्निहित कार्यान्वयन को बुलाता है। स्पष्ट कार्यान्वयन सिर्फ स्पष्टीकरण के बिना सूचीबद्ध है।इंटरफ़ेस को कार्यान्वित करना स्पष्ट और स्पष्ट दोनों समझ में आता है?

क्या यह इंटरफेस के एक निहित और स्पष्ट कार्यान्वयन दोनों के लिए समझ में आता है? मुझे लगता है कि स्पष्ट कार्यान्वयन अनावश्यक है (इस मामले में)।

public class PassTextBox : TextBox, IScriptControl 
{ 
    public virtual IEnumerable<ScriptDescriptor> GetScriptDescriptors() 
    { 
     var descriptor = new ScriptControlDescriptor(
      "AjaxEnabled.PassTextBox", ClientID); 
     // ... 
     return new ScriptDescriptor[] {descriptor}; 
    } 

    IEnumerable<ScriptDescriptor> IScriptControl.GetScriptDescriptors() 
    { 
     return GetScriptDescriptors(); 
    } 
} 

Btw, कोड स्पष्ट कार्यान्वयन के बिना ठीक से चलाने के लिए, के रूप में अंतर्निहित कार्यान्वयन सार्वजनिक है लगता है।

यह MCTS Self-Paced Training Kit (Exam 70-515): Web Applications Development with Microsoft .NET Framework 4 अध्याय 9, पाठ 2, अभ्यास 3 सटीक होने के लिए चिंतित है।

+0

[अंतरफलक के अंतर्निहित और स्पष्ट कार्यान्वयन] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2756520/implicit-and-explicit-implementation-of-interface) –

+2

इन परीक्षाओं हमेशा एक शुद्धिपत्र एक मील लंबा है कि है । आप अपना खुद का जमा कर सकते हैं: http://oreilly.com/catalog/errata.csp?isbn=9780735627406 –

उत्तर

10

स्पष्ट कार्यान्वयन पूरी तरह से अनिवार्य प्रतीत होता है।

मैं इसे कॉल करने के तरीके के बारे में सोच नहीं सकता हूं, अगर आप इसे छोड़ देते हैं तो इससे कोई फर्क पड़ता है।

एक छोटा सा अंतर है, निहित संस्करण वर्चुअल अर्थ है जिसका इसे ओवरराइड किया जा सकता है। इस प्रविष्टि बिंदु पर स्पष्ट संस्करण हमेशा कहा जाएगा। लेकिन चूंकि यह केवल आभासी सदस्य को कॉल करता है कि अंतर का उपयोग यहां नहीं किया जाता है।

+0

मार्क ग्रेवेल [कहते हैं] (http://stackoverflow.com/a/2756728/537956) दोनों को लागू करने का एक कारण उप-वर्गों के लिए 'ओवरराइड'_' के लिए _ गैर-स्पष्ट विधि 'आभासी' या 'सार' है। मेरे उदाहरण में यह वास्तव में 'वर्चुअल' है, लेकिन मुझे नहीं लगता कि यह स्पष्ट इंटरफ़ेस को लागू करने का कारण क्यों होगा। मैं मार्क से पूछूंगा कि उसका जवाब उसके जवाब पर टिप्पणी करके क्या है। – comecme

+0

आपके पास 2 पूरी तरह से अलग कार्यान्वयन हो सकते हैं। लेकिन क्या यह वांछनीय है? और जब इसका शोषण होता है तो यह अधिक समझ में आता है कि कार्यान्वयन को स्पष्ट रूप से रखा जाए और वर्चुअल विधि को कॉल करें। –

+0

+1। यह वास्तव में पूरी तरह से अनिवार्य है। –

संबंधित मुद्दे