2010-04-30 21 views

Respuesta

23

No directamente, sin embargo, puede usar AppDomain.GetAssemblies() para obtener todos los ensamblados actualmente cargados, y luego usar Assembly.GetTypes() para obtener todos los tipos en ese ensamblaje. Luego use Type.IsSubclassOf() para determinar si es una subclase del tipo que busca.

+0

Gracias. Funciona. – Polaris

+0

¿Hay alguna forma de obtener solo conjuntos de usuarios (a diferencia de los conjuntos de sistemas)? Si hay una opción para obtener este conjunto y todos los ensamblados a los que se hace referencia (a este), sería una buena solución. – Shimmy

+0

Encontrado: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getreferencedassemblies.aspx – Shimmy

4

puede seleccionar la Asamblea desea comprobar, obtener los tipos con el método Assembly.GetTypes() y prueba para cada uno de ellos si se trata de una subclase con Type.IsSubclassOf()

ver Assembly members y Type members

19

Usted puede hacer esto :

var subclassTypes = Assembly 
    .GetAssembly(typeof(BaseClass)) 
    .GetTypes() 
    .Where(t => t.IsSubclassOf(typeof(BaseClass))); 
3

prueba este código:

public static IEnumerable<Type> GetAllSubclassOf(Type parent) 
{ 
    foreach (var a in AppDomain.CurrentDomain.GetAssemblies()) 
     foreach (var t in a.GetTypes()) 
      if (t.IsSubclassOf(parent)) yield return t; 
} 
Cuestiones relacionadas