2009-07-09 9 views
31

In C#, wie erhalten Sie einen Verweis auf die Basisklasse einer bestimmten Klasse?C#: Wie erhalten Sie die Basisklasse einer Klasse?

Angenommen, Sie haben eine bestimmte Klasse, MyClass, und Sie möchten eine Referenz auf MyClass 'Superklasse erhalten.

Ich denke dabei an etwas wie folgt aus:

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

Es scheint jedoch, da keine geeignete GetBase Methode.

Antwort

44

Verwenden Sie Reflection vom Typ der aktuellen Klasse.

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

Außerdem, wenn Sie die Art Ihrer aktuellen Objekts nicht kennen, können Sie bekommen es geben GetType verwenden und dann bekommen die Basetype dieser Art:

Type superClass = myObject.GetType().BaseType; 

documentation

2

Die Type.BaseType Eigenschaft ist, was Sie suchen.

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

Sie können nur Basis verwenden.

5

Dies wird den Basistyp (wenn vorhanden) und eine Instanz davon erstellen:

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

Alternativ, wenn Sie die Art zum Zeitpunkt der Kompilierung nicht wissen, die folgenden Befehle verwenden:

Siehe Type.BaseType und Activator.CreateInstance auf MSDN.

2

obj.base erhalten Sie einen Verweis auf das übergeordnete Objekt erhalten von einer Instanz des abgeleiteten Objekts obj.

typeof (obj) .BaseType erhalten Sie einen Hinweis auf die Art Mutterobjekts von einer Instanz des abgeleiteten Objekts obj erhalten.

+0

'base' und' this' sind nur in Instanzmethoden zur Verfügung. –

Verwandte Themen