2009-07-09 18 views
31

सी # में, किसी दिए गए वर्ग की बेस क्लास का संदर्भ कैसे प्राप्त करता है?सी #: आप कक्षा 'बेस क्लास कैसे प्राप्त करते हैं?

उदाहरण के लिए, मान लें कि आपके पास एक निश्चित कक्षा है, MyClass, और आप MyClass 'सुपरक्लास का संदर्भ प्राप्त करना चाहते हैं।

मैं इस तरह मन कुछ में है:

Type superClass = MyClass.GetBase() ; 
// then, do something with superClass 

हालांकि, ऐसा लगता है कोई उपयुक्त GetBase विधि।

Type superClass = myObject.GetType().BaseType; 

documentation

उत्तर

44

वर्तमान कक्षा के प्रकार से प्रतिबिंब का उपयोग करें।

Type superClass = myClass.GetType().BaseType; 
20
Type superClass = typeof(MyClass).BaseType; 

साथ ही, यदि आप अपने वर्तमान वस्तु के प्रकार पता नहीं है, तो आप प्राप्त कर सकते हैं यह GetType का उपयोग कर लिखते हैं और फिर उस प्रकार के BaseType मिलता है Type.BaseType संपत्ति वह है जिसे आप ढूंढ रहे हैं।

Type superClass = typeof(MyClass).BaseType; 
-1

तुम सिर्फ आधार का उपयोग कर सकते हैं।

5

इस आधार प्रकार (यदि वह मौजूद है) हो जाते हैं और यह का एक उदाहरण पैदा करेगा: यदि आप संकलन समय पर प्रकार निम्न का उपयोग नहीं जानता कि वैकल्पिक रूप से

Type baseType = typeof(MyClass).BaseType; 
object o = null; 
if(baseType != null) { 
    o = Activator.CreateInstance(baseType); 
} 

,:

object myObject; 
Type baseType = myObject.GetType().BaseType; 
object o = null; 
if(baseType != null) { 
    o = Activator.CreateInstance(baseType); 
} 

Type.BaseType और Activator.CreateInstance एमएसडीएन पर देखें।

2

obj.base आप व्युत्पन्न वस्तु obj का एक उदाहरण से पैरेंट ऑब्जेक्ट के लिए एक संदर्भ मिल जाएगा।

typeof (obj) .BaseType आप व्युत्पन्न वस्तु obj का एक उदाहरण से पैरेंट ऑब्जेक्ट के प्रकार के लिए एक संदर्भ मिल जाएगा।

+0

'base' और' this' उदाहरण के तरीकों में ही उपलब्ध हैं। –

1

यदि आप यह देखना चाहते हैं कि कोई वर्ग दूसरे के उप-वर्ग है तो आप का उपयोग कर सकते हैं।

if (variable is superclass){ //do stuff } 

डॉक्स: https://msdn.microsoft.com/en-us/library/scekt9xw.aspx

+1

वाउव। यह वाक्य रचनात्मक रूप से चीनी है। अगर (यह कक्षा ए है) –

संबंधित मुद्दे