मैं विरासत वर्ग के Type
को कैसे प्राप्त करूं और इसे कक्षा के मूल निर्माता में भी उत्तीर्ण कर दूं? नीचे दिए गए कोड नमूना देखें:बेस ऑब्जेक्ट प्रकार को बेस कन्स्ट्रक्टर कॉल में पास करें
// VeryBaseClass is in an external assembly
public abstract class VeryBaseClass
{
public VeryBaseClass(string className, MyObject myObject)
{
}
}
// BaseClass and InheritedClass are in my assembly
public abstract class BaseClass : VeryBaseClass
{
public BaseClass(MyObject myObject) :
base(this.GetType().Name, myObject) // can't reference "this" (Type expected)
{
}
}
public class InheritedClass : BaseClass
{
public InheritedClass(MyObject myObject)
{
}
}
लाइन क्योंकि मैं this
अभी तक संदर्भ नहीं दे सकता, के रूप में वस्तु का निर्माण पूरा नहीं किया है और इसलिए मौजूद नहीं है base(typeof(this).Name, myObject)
काम नहीं करता।
क्या वर्तमान में निर्माण करने वाले ऑब्जेक्ट के Type
को पकड़ना संभव है?
संपादित करें:
orsogufo suggested के रूप में नमूना सही किया, लेकिन अभी भी काम नहीं करता है, के रूप में this
अनिर्धारित रहता है।
संपादित करें 2:
बस स्पष्ट करने के लिए, मैं "InheritedClass"
के साथ समाप्त करना चाहते हैं VeryBaseClass(string className, MyObject myObject)
निर्माता में पारित कर दिया जा रहा है।
आप ऐसा क्यों करना चाहते हैं?एक कन्स्ट्रक्टर को परवाह नहीं करना चाहिए कि इसे अपनी कक्षा या व्युत्पन्न कक्षा को तुरंत चालू करने के लिए बुलाया जा रहा है या नहीं। – AakashM
मुझे लगता है कि आप बिंदु खो रहे हैं। बाहरी असेंबली जो मेरे द्वारा उपयोग किए जाने वाले ढांचे के बेस क्लास को परिभाषित करती है, उसे कन्स्ट्रक्टर में पारित करने के लिए स्वयं की कक्षा के स्ट्रिंग प्रस्तुति की आवश्यकता होती है। अब तक मैं इसे अंदर डाल रहा हूं जैसा कि आप उम्मीद करेंगे (एक स्ट्रिंग के रूप में) लेकिन मैं इसे पसंद करूंगा अगर यह सैनिटी के लिए रनटाइम पर काम करेगा। – Codesleuth
ओह, मैं देखता हूं, यह आपकी कक्षा नहीं है। मुझे अभी भी लगता है कि यह एक बुरी बात है कि यह परवाह करता है :) – AakashM