¿Es posible en C# obtener tipos de subclases de la clase base?Obtener clases secundarias de la clase base
17
A
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.
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
- 1. Problema al ignorar la propiedad de la clase base en asignaciones de clases secundarias usando Automapper
- 2. Si la clase Base está marcada Serializable ¿están todas las clases secundarias marcadas también?
- 3. Forzar clases secundarias para reemplazar el método
- 4. ¿Cómo crear instancias de diferentes clases secundarias de forma condicional?
- 5. Asignar clase derivada de la clase base
- 6. Método para "anular" miembros compartidos en clases secundarias
- 7. ¿Cómo obtener la lista de tablas secundarias para una tabla de base de datos?
- 8. Hacer clases secundarias como no serializable en java
- 9. De la clase base en C#, ¿obtener tipo derivado?
- 10. Python: Obtener valores de la clase base de la clase derivada
- 11. ¿Cómo obtener un valor dentro de la clase padre de la clase secundaria (en clases anidadas)?
- 12. obtener tipo de clase base en python
- 13. La mejor manera de obtener propiedades secundarias con GetProperty
- 14. Clases base sin Qt
- 15. ¿Cómo puedo obtener todas las clases heredadas de una clase base?
- 16. Grandes clases base abstractas
- 17. clases base a "Nueva Clase C++" de diálogo
- 18. Levantar eventos de clase base en clases derivadas C#
- 19. ¿Puedes extender dos clases en una clase?
- 20. TypeID para las clases derivadas de una clase base común
- 21. Ruby "Base" clases
- 22. clase base de la función anulada método de clase base
- 23. cómo obtener el nombre de clase derivado de la clase base
- 24. Campos estáticos en una clase base y clases derivadas
- 25. C# Interfaz y clases base
- 26. Obtener todas las clases heredadas de una clase abstracta
- 27. Obtener ruta para la clase base de la clase STI en Rails
- 28. LinqToSql y base abstracta clases
- 29. Uso de la reflexión para obtener todas las clases de cierto tipo base en dll
- 30. Impresión del nombre de clase derivada en la clase base
Gracias. Funciona. – Polaris
¿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
Encontrado: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getreferencedassemblies.aspx – Shimmy