2009-11-03 8 views
11
class Foo { } 

    class Foo1 : Foo { } 

    class Foo2 : Foo { } 

Jak byłbym w stanie uzyskać wszystkie klasy, które używają Foo jako klasy bazowej? Odziedziczone klasy nie są konieczne w tym samym zespole.Jak mogę uzyskać wszystkie odziedziczone klasy klasy bazowej?

+1

w czasie projektowania lub uruchamiania? Jeśli projekt, możesz odnieść się do tego pytania, aby uzyskać wskazówki: http://stackoverflow.com/questions/282377/visual-studio-how-do-i-show-all-classes-inherited-co--base-class –

+0

W czasie wykonywania, dzięki. – Carlsberg

Odpowiedz

15

To nie jest szybkie, ale tak długo jak Foo jest typem konkretnym (nie interfejsem), to powinno działać. Foo sama nie jest zwracana przez ten kod.

AppDomain.CurrentDomain.GetAssemblies() 
         .SelectMany(assembly => assembly.GetTypes()) 
         .Where(type => type.IsSubclassOf(typeof(Foo))); 
+1

Nie sądzę, że jest szybszy sposób to zrobić. – SLaks

Powiązane problemy