Erhalte den Vererbungsbaum vom Typ

9

Ich versuche einen einfachen Weg zu finden, den Vererbungsbaum eines bestimmten Typs durch Reflexion in C # zu erhalten.

Sagen wir, ich habe die folgenden Klassen;

%Vor%

Wie verwende ich die Reflexion über den Typ "C", um zu bestimmen, dass seine Oberklasse "B" ist, die wiederum von "A" kommt und so weiter? Ich weiß, dass ich 'IsSubclassOf ()' verwenden kann, aber nehmen wir an, dass ich nicht die Superklasse kenne, nach der ich suche.

    
A.R. 19.04.2011, 13:13
quelle

2 Antworten

19

Um das unmittelbare übergeordnete Element eines Typs zu erhalten, können Sie das Type.BaseType verwenden. Eigenschaft. Sie können BaseType iterativ aufrufen, bis null zurückgegeben wird, um die Vererbungshierarchie eines Typs zu durchlaufen.

Zum Beispiel:

%Vor%

Beachten Sie, dass es nicht zulässig ist, System.Object als Endpunkt zu verwenden, da nicht alle Typen (z. B. Schnittstellentypen) davon erben.

    
Ani 19.04.2011, 13:15
quelle
3

Ein Objekt vom Typ System.Type hat eine Eigenschaft namens BaseType , die "den Typ zurückgibt, von dem der aktuelle System.Type direkt erbt." Sie können diese Kette von BaseType s durchlaufen, bis Sie null erhalten haben. An diesem Punkt wissen Sie, dass Sie System.Object erreicht haben.

    
AakashM 19.04.2011 13:15
quelle

Tags und Links