Betrachten Sie die folgenden Klassen-Hierarchie: Basisklasse A, Klasse B und C von A geerbt und Klasse D geerbt von B.Wie alle direkten Subklassen einer Klasse mit .NET Reflexion finden
public class A {...}
public class B : A {...}
public class C : A {...}
public class D : B {...}
ich verwenden kann, folgender Code alle Unterklassen von A einschließlich D zu finden:
var baseType = typeof(A);
var assembly = typeof(A).Assembly;
var types = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType));
Aber ich brauche nur direkte Unterklassen von A (B und C in Beispiel) und schließt alle Klassen nicht direkt geerbt von A (wie D) zu finden. Irgendeine Idee, wie man das macht?
Nicht sicher, ob Sie 'typeof (t)' dort wollen; führt dies nicht zu 'System.Type', da' t' bereits der 'System.Type' ist, der' A', 'B',' D' usw. repräsentiert? EDIT: Nein, ich bin dumm, das ist nur ein Compilerfehler! –
@ChrisSinclair: Geändert, um 'type' und' t' direkt zu verwenden. Vielen Dank; Habe VS nicht vor mir zu verifizieren. – zimdanen
danke! Ich habe die BaseType-Eigenschaft verpasst. Darüber hinaus jede Idee, wie alle ersten nicht-abstrakten Unterklassen einer Klasse zu bekommen? In meinem Beispiel, wenn B abstrakt ist, dann will ich C und D. – mykola