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.
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.
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.
Tags und Links c# reflection inheritance