Similar question but not quite the same thingसी # में इंटरफेस पर एक्सटेंशन विधियों के साथ छद्म-बहु-विरासत?
मैं सोच रहा था इंटरफेस के रूप में एक ही नाम स्थान में विस्तार के तरीकों के साथ आपको लगता है कि में एकाधिक वंशानुक्रम के लिए एक समान प्रभाव आप डुप्लिकेट कोड एक ही इंटरफ़ेस को लागू करने में 10 में एक ही तरीका है की जरूरत नहीं है हो सकता है कि विभिन्न वर्ग
ऐसा करने के कुछ डाउनसाइड्स क्या हैं? मुझे लगता है कि पेशेवर बहुत स्पष्ट हैं, यह वह विपक्ष है जो आम तौर पर बाद में आपको काटने के लिए वापस आती है।
मुझे लगता है कि एक विपक्ष का तरीका यह है कि एक्सटेंशन विधियां आभासी नहीं हो सकती हैं, इसलिए आपको यह सुनिश्चित करने की ज़रूरत है कि आप वास्तव में चाहते हैं कि वे प्रत्येक उदाहरण के लिए उसी तरह लागू हों।
क्या आप समझा सकते हैं "तो फू आईबार से नहीं निकलता है और इसका उपयोग एक दूसरे के साथ नहीं किया जा सकता"? यदि मेरे पास सार्वजनिक कक्षा है Foo: IBar, क्या कोई भी आईबीआर की अपेक्षा कहीं भी किसी फू में पास नहीं कर पाएगा? या आप कुछ अलग मतलब था? मुझे एहसास है कि यह एक इंटरफ़ेस के रूप में कार्य करना बंद कर देता है। कार्यात्मक रूप से मैं इसे एक ठोस बेस क्लास की तरह अभिनय करता हूं जिसमें इंटरफ़ेस की तुलना में वर्चुअल विधियां नहीं हैं।(चाहे यह एक अच्छा विचार है या नहीं, संभवतः एक अलग सवाल है, लेकिन यह DRY रखने के लिए उपयोगी लगता है) – Davy8
और अधिकांश समय में मुझे वास्तव में एकाधिक विरासत की आवश्यकता नहीं होती है, लेकिन काम पर कोड का एक हिस्सा है सभी समान कोड के साथ सचमुच 10-20 विभिन्न वर्गों पर एक ही इंटरफ़ेस को लागू करने के लिए पूरे स्थान पर दोहराए गए कोड के साथ एक गड़बड़ की तरह लगता है, और इसे बेस क्लास में नहीं रखा जा सकता क्योंकि वे पहले से ही किसी अन्य बेस क्लास से प्राप्त होते हैं जिसमें विधियां हैं एक अलग इंटरफेस के लिए आम है। – Davy8
यदि फू आईबीर से निकला है तो उसे इबार को लागू करने वाले विस्तार विधियों के उदाहरण के तरीकों की आवश्यकता नहीं है। क्या आप विस्तार विधियों में इन विधियों को प्रतिनिधि करने की उम्मीद कर रहे हैं? मैं मान रहा था कि कार्यान्वयन केवल एक्सटेंशन द्वारा प्रदान किया गया था। यदि आप प्रतिनिधिमंडल कर रहे हैं, तो मुझे लगता है कि इच्छित इंटरफ़ेस कार्यक्षमता को लागू करने वाले बेस क्लास की संरचना विस्तार विधियों से अधिक बेहतर है। शायद आप सजावटी पैटर्न का उपयोग कर कार्यक्षमता प्रदान कर सकते हैं। – tvanfosson