निम्नलिखित क्लाइंट कोड को देखते हुए:क्या एक कन्स्ट्रक्टर एक उप-क्लास लौटा सकता है?
var obj = new Class1();
क्या क्लास 1 के कन्स्ट्रक्टर को संशोधित करने का कोई तरीका है ताकि यह वास्तव में इसके बजाय उप-वर्ग (या कुछ अन्य वैकल्पिक कार्यान्वयन) लौटाए?
मैं कुछ शर्त के आधार पर, ओबीजे को दो अलग-अलग कार्यान्वयन में से एक प्राप्त करना चाहता हूं। जाहिर है, मैं एक फैक्ट्री या डी फ्रेमवर्क का उपयोग करने के लिए बदल सकता हूं, लेकिन यदि संभव हो, तो मैं क्लाइंट कोड बदलने से बचना चाहता हूं।
मुझे लगता है कि जवाब नहीं है, लेकिन मुझे आश्चर्य है कि ऐसा करने का कुछ चालाक तरीका है या नहीं।
हम एक सुविधा "एक्सटेंशन नया" जोड़ने पर विचार कर रहे हैं जो आपको अनिवार्य रूप से एक स्थैतिक फैक्ट्री विधि बनाने की अनुमति देगा जिसे "नया" ऑपरेटर उपयोग किया जाने पर कॉल किया जाएगा, क्योंकि एक्सटेंशन विधियों को "।" ऑपरेटर का उपयोग किया जाता है। यह कारखाने के लिए एक अच्छी वाक्य रचनात्मक चीनी होगी। यदि आपके पास वास्तव में एक अद्भुत परिदृश्य है जहां इस तरह का पैटर्न उपयोगी होगा, तो मुझे एक उदाहरण देखना अच्छा लगेगा। –
@Eric: जबकि यह विशेष रूप से सी # उदाहरण नहीं है, मैं एक ऐसी स्थिति में आया हूं जहां यह सी ++ में उपयोगी होगा। मैं एक क्रॉस-प्लेटफार्म लाइब्रेरी विकसित कर रहा हूं, और यह प्लेटफॉर्म-अज्ञेय एबीसी के लिए वास्तव में उपयोगी होगा ताकि वह अपने कन्स्ट्रक्टर से प्लेटफ़ॉर्म-विशिष्ट व्युत्पन्न क्लास इंस्टेंस लौटा सके। मुझे यकीन है कि सी # के साथ विकास करते समय ऐसी ही स्थितियां होनी चाहिए। – Mac
@ एरिक लिपर्ट - मेरे पास आपके लिए असली दुनिया का परिदृश्य है! http://blog.hackensplat.com/2010/09/construct-something-else-c.html – billpg