2009-07-09 13 views
31

W języku C#, w jaki sposób uzyskać odniesienie do klasy bazowej danej klasy?C#: jak uzyskać klasę podstawową klasy?

Załóżmy na przykład, że masz pewną klasę, MyClass i chcesz uzyskać odwołanie do nadklasy MyClass.

mam na myśli coś takiego:

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

Okazuje się jednak, że nie jest odpowiednią metodą GetBase.

Odpowiedz

44

Użyj Odbicie od typu obecnej klasy.

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

Dodatkowo, jeśli nie wiesz, rodzaj bieżącego obiektu, można uzyskać to wpisać użyciu GetType a następnie uzyskać BaseType tego typu:

Type superClass = myObject.GetType().BaseType; 

documentation

-1

można po prostu użyć podstawy.

5

Pozwoli to uzyskać typ podstawowy (jeśli istnieje) i utworzyć instancję nim:

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

Ewentualnie, jeśli nie wiem, typ w czasie kompilacji użyć następujących:

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

Zobacz Type.BaseType i Activator.CreateInstance na stronie MSDN.

2

obj.base spowoduje wyświetlenie odniesienia do obiektu nadrzędnego z instancji obiektu pochodnego obj.

typeof (obj) .BaseType będzie Ci odniesienie do rodzaju obiektu nadrzędnego z instancji obiektu pochodzącego obj.

+0

'' this' base' i są dostępne tylko w metodach instancji. –

Powiązane problemy