मैं समझता हूं कि स्थैतिक विधि विरासत सी # में समर्थित नहीं है। मैंने कई चर्चाएं भी पढ़ी हैं (यहां सहित) जिसमें डेवलपर्स इस कार्यक्षमता की आवश्यकता का दावा करते हैं, जिस पर सामान्य प्रतिक्रिया है "यदि आपको स्थिर सदस्य विरासत की आवश्यकता है, तो आपके डिजाइन में कोई दोष है"।स्थैतिक विधि विरासत का सही विकल्प क्या है?
ठीक है, यह देखते हुए कि OOP मुझे और भी स्थिर विरासत के बारे में सोचना नहीं चाहता है, मैं निष्कर्ष निकालना चाहिए कि इसके लिए मेरी स्पष्ट की जरूरत मेरी डिजाइन में एक त्रुटि को इंगित करता है। लेकिन, मैं अटक गया हूँ। मैं वास्तव में इसे हल करने में कुछ मदद की सराहना करता हूं। यहाँ चुनौती ...
मैं एक सार आधार वर्ग का निर्माण करना चाहते है कि कुछ जटिल प्रवर्तन कोड समाहित (यह एक फल कॉल)। यह कोड कन्स्ट्रक्टर में नहीं रखा जा सकता है, क्योंकि इसमें से कुछ आभासी विधि कॉल पर भरोसा करेंगे।
फल अन्य ठोस वर्ग (एप्पल, नारंगी), जिनमें से प्रत्येक एक मानक कारखाने विधि CreateInstance() बना सकते हैं और एक उदाहरण प्रारंभ करने में प्रदर्शित करना है द्वारा विरासत में मिला दिया जाएगा।
यदि स्थैतिक सदस्य विरासत व्यवहार्य था, तो मैं आधार वर्ग में फैक्ट्री विधि रखूंगा और व्युत्पन्न कक्षा में वर्चुअल विधि कॉल का उपयोग उस प्रकार से प्राप्त करने के लिए कर सकता हूं, जिससे एक ठोस उदाहरण प्रारंभ किया जाना चाहिए। ग्राहक कोड सरल रूप से प्रारंभिक ऐप्पल उदाहरण प्राप्त करने के लिए Apple.CreateInstance() को आमंत्रित करेगा।
लेकिन स्पष्ट रूप से यह संभव नहीं है, इसलिए किसी को बताएं कि किस तरह मेरी डिजाइन ही कार्यक्षमता को समायोजित करने के बदलने की जरूरत कृपया कर सकते हैं।
मैं यह बताना चाहता हूं कि "यह कोड कन्स्ट्रक्टर में नहीं रखा जा सकता है, क्योंकि इसमें से कुछ वर्चुअल विधि कॉल पर भरोसा करेंगे" सही नहीं है। आप एक कन्स्ट्रक्टर के अंदर आभासी तरीकों को कॉल कर सकते हैं। (आपको अपनी कॉल सावधानीपूर्वक डिज़ाइन करना होगा, क्योंकि वर्चुअल विधियों को कॉल करते समय आपके पास आंशिक रूप से प्रारंभिक कक्षा हो सकती है, लेकिन यह समर्थित है।) अधिक जानकारी के लिए रावड्रे का उत्तर देखें। – Ruben