जब आपके पास एक क्लास कार है जो IVehicle लागू करती है और आप इसे एक सजावट में लपेटना चाहते हैं जो आगे की सभी कारों को कॉल करती है और उन्हें गिना जाता है, तो आप इसे कैसे करेंगे?सी # में प्रॉक्सी या सजावटी वर्ग को लागू करने का सबसे छोटा तरीका क्या है?
रूबी में मैं बस किसी भी तरीके के बिना एक सजावट का निर्माण कर सकता हूं और कार ऑब्जेक्ट पर सभी कॉल अग्रेषित करने के लिए method_missing का उपयोग कर सकता हूं।
जावा में मैं एक प्रॉक्सी ऑब्जेक्ट बना सकता हूं जो एक विधि के माध्यम से सभी कोड चलाता है और बाद में इसे आगे बढ़ाता है।
क्या सी # में कोई समान बात है जो मैं कर सकता हूं?
अद्यतन:
answeres पर है और यह इस के लिए एक विधि समान लिखने के लिए संभव हो जाना चाहिए क्या मैं System.Reflection.Emit के बारे में पढ़ा आधारित:
Type proxyBuilder(Type someType, delagate functionToBeApplied, Object forward)
जहां प्रकार कुछ प्रकार के सभी इंटरफ़ेस लागू करता है, फ़ंक्शन निष्पादित करता है और फिर इसके बदले में ऑब्जेक्ट को ऑब्जेक्ट करने के लिए विधि कॉल को आगे बढ़ाता है।
क्या कुछ lib है जो सिर्फ मुझे करता है या मुझे अपना खुद लिखना होगा?
कृपया, कुछ शब्दों में समझाएं, "FooBase' का उपयोग कड़ाई से वैकल्पिक" क्या है? क्या यह "किसी भी 'IFoo' की अनुमति है"? अर्धविराम मुझे अलग-अलग बयान पढ़ता है और तर्क भ्रम को जोड़ने के लिए आत्मनिर्भर है। सीपीटी के बावजूद। स्पष्ट फुसफुसाते हुए: "इसका मतलब यह है कि 'FooBase' को किसी अन्य' IFoo' के साथ प्रतिस्थापित किया जा सकता है, 'IFoo' को' FooBase' करता है 'में लागू करने के लिए, यदि यह इतना आसान है तो मैं निराश होगा। उत्तर से निराश न हों, बल्कि मेरे परान्या के साथ। "verboseness" के लिए खेद है (अब मुझे idiom खोजने की जरूरत है, इस घटना के अनुरूप) –
मुझे लगता है कि यह आपका निराशाजनक उत्तर है; कोड केवल 'IFoo' पर निर्भर होना चाहिए; 'FooBase' कोड के लिए एक सुविधा है जो 'IFoo' को लागू करने का विकल्प चुनती है। –
धन्यवाद!यदि आपके पास समय है, तो कृपया दो और प्रश्नों का उत्तर दें: ** 1) ** यह विषय पहले से 6 साल का है, ऐसा लगता है कि तब से कुछ भी नहीं बदला है और समस्या को हल करने के तरीके अभी भी वही हैं? * (कभी नहीं सोचा कि मैं सी ++ याद करूँगा, लेकिन इसमें '->' ओवरलोडिंग है) * ** 2) ** क्या मुझे यह गलत लगता है: आप कह रहे हैं कि अमूर्त वर्गों से उत्तराधिकारी होना बुरा व्यवहार है? मैं स्वयं उन्हें डिफ़ॉल्ट कार्यान्वयन के साथ इंटरफेस मानता हूं और वे काफी सुविधाजनक हैं। और स्पष्ट रूप से 'IFoo' के रूप में 'SomeFoo' उदाहरणों को संदर्भित कर सकते हैं। * (इस बीच, एमएस ने विस्तार विधियों को लागू किया 'polymorphism ..) * –