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

    class Foo1 : Foo { } 

    class Foo2 : Foo { } 

¿Cómo podría obtener todas las clases que usan Foo como clase base? Las clases heredadas no son necesarias en el mismo ensamblaje.¿Cómo puedo obtener todas las clases heredadas de una clase base?

+1

¿diseño o tiempo de ejecución? Si diseño, puede consultar esta pregunta para obtener algunos consejos http://stackoverflow.com/questions/282377/visual-studio-how-do-i-show-all-classes-inherited-from-a-base-class –

+0

En tiempo de ejecución, gracias. – Carlsberg

Respuesta

15

Esto no es rápido, pero mientras Foo sea de tipo concreto (no una interfaz), entonces debería funcionar. Foo no es devuelto por este código.

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

No creo que haya una manera más rápida de hacer esto. – SLaks

Cuestiones relacionadas