Rozważmy następujące klasy hierarchia: podstawa klasy A, klasy B i C dziedziczone z klasy D i odziedziczone B.Jak znaleźć wszystkie bezpośrednie podklasy klasy z .NET Odbicie
public class A {...}
public class B : A {...}
public class C : A {...}
public class D : B {...}
mogę użyć Poniższy kod, aby znaleźć wszystkie podklasy a w tym D:
var baseType = typeof(A);
var assembly = typeof(A).Assembly;
var types = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType));
Ale muszę znaleźć tylko bezpośrednie podklasy a (B i C na przykład) i uwzględniają wszystkie klasy nie bezpośrednio dziedziczone z (takie jak D). Każdy pomysł, jak to zrobić?
Nie jestem pewien, czy chcesz użyć 'typeof (t)'; nie spowoduje to 'System.Type', ponieważ' t' jest już 'System.Type' reprezentujący' A', 'B',' D', etc? EDIT: Nie, jestem głupi, to zamiast tego błąd kompilatora! –
@ChrisSinclair: Zmieniono używanie bezpośrednio 'type' i' t'. Dzięki; nie mam przed sobą VS, żeby zweryfikować w tej chwili. – zimdanen
dzięki! Opuściłem właściwość BaseType. Dodatkowo, jakikolwiek pomysł jak zdobyć wszystkie pierwsze nie abstrakcyjne podklasy klasy? W mojej próbce, jeśli B jest abstrakcyjna, chcę C i D. – mykola