que tengo una clase abstracta:Obtener todas las clases heredadas de una clase abstracta
abstract class AbstractDataExport
{
public string name;
public abstract bool ExportData();
}
tengo clases que se derivan de AbstractDataExport:
class XmlExport : AbstractDataExport
{
new public string name = "XmlExporter";
public override bool ExportData()
{
...
}
}
class CsvExport : AbstractDataExport
{
new public string name = "CsvExporter";
public override bool ExportData()
{
...
}
}
¿Es posible hacer algo como esto? (Pseudocódigo :)
foreach (Implementation imp in Reflection.GetInheritedClasses(AbstractDataExport)
{
AbstractDataExport derivedClass = Implementation.CallConstructor();
Console.WriteLine(derivedClass.name)
}
con una salida como
CsvExporter
XmlExporter
?
La idea detrás de esto es simplemente crear una nueva clase que se derive de AbstractDataExport para que pueda iterar a través de todas las implementaciones automáticamente y agregar, por ejemplo, los nombres a una lista desplegable. Solo quiero codificar la clase derivada sin cambiar nada más en el proyecto, recompilar, ¡bingo!
Si tiene soluciones alternativas: dígaselo.
Gracias
¿Puede un tipo no ser abstracto y no ser de clase al mismo tiempo? – user2341923
¡Esto es una locura! No tenía idea de que pudieras hacer cosas como esta con reflexión. – CanadaIT
@ user2341923 una enumeración? – Cesar