2012-08-07 13 views
6

एक डब्ल्यूसीएफ चैनल (चैनलफैक्टरी के माध्यम से बनाया गया) ICOMunicationObject को कैसे कार्यान्वित करता है, लेकिन बंद() विधि का खुलासा नहीं करता है, उदाहरण के लिए, जब तक आप प्रॉक्सी को ICommunicationObject पर नहीं डालते? क्या इसका कोई मतलब है?यदि डब्ल्यूसीएफ प्रॉक्सी ICOMunicationObject को कार्यान्वित करता है तो यह विधियां दिखाई नहीं दे रही हैं?

मुझे आज घर के रास्ते के बारे में सोचने और मेरे सिर में इसे समझने में नहीं लगा। शायद मैं गलत सवाल पूछ रहा हूँ? शायद मैं एक बेवकूफ सवाल पूछ रहा हूँ? :)

क्या यह किसी प्रकार का निंजा चाल है?

उत्तर

5

यह Explicit Interface Implementation के माध्यम से किया जाता है।

मान लीजिए आप एक इंटरफेस है, तो जैसे:

public interface IFoo 
{ 
    void Foo(); 
} 

आप यह सामान्य रूप से लागू कर सकते हैं: वैकल्पिक रूप से

public class Bar : IFoo 
{ 
    public void Foo() {} // Implicit interface implementation 
} 

, तब आप इंटरफ़ेस सदस्यों स्पष्ट, जो कलाकारों की आवश्यकता को लागू कर सकते हैं:

public class Baz : IFoo 
{ 
    void IFoo.Foo() {} // This will require casting the object to IFoo to call 
} 

था कई बार बहुत उपयोगी हो सकता है। उदाहरण के लिए, अक्सर कक्षाओं में IDisposable को लागू करने के लिए किया जाता है जहां पसंदीदा एपीआई .Close() पर कॉल करना होगा, उदाहरण के लिए। IDisposable को स्पष्ट रूप से कार्यान्वित करके, आप Dispose() विधि को "छुपाएं", लेकिन फिर भी क्लास इंस्टेंस को उपयोग कथन के माध्यम से उपयोग करने की अनुमति दें।

+0

धन्यवाद, रीड और दान:

internal interface IExample { void DoSomething(); } class ImplicitExample : IExample { public void DoSomething() { // ... } } class ExplicitExample : IExample { void IExample.DoSomething() { // ... } } class Consumer { void Demo() { var explicitExample = new ExplicitExample(); // explicitExample.DoSomething(); <-- won't compile ((IExample)explicitExample).DoSomething(); // <-- compiles var implicitExample = new ImplicitExample(); implicitExample.DoSomething(); // <-- compiles } } 

यहाँ इस विषय पर एक MSDN लेख का लिंक है: यहाँ एक उदाहरण स्पष्ट इंटरफेस कार्यान्वयन और अंतर्निहित इंटरफेस कार्यान्वयन के बीच अंतर का प्रदर्शन है! पहला पोस्ट जीतता है। –

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

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