我有一门抽象课:
abstract class AbstractDataExport
{
public string name;
public abstract bool ExportData();
}
我有一些从 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()
{
...
}
}
有可能做这样的事情吗? (Pseudocode:)
foreach (Implementation imp in Reflection.GetInheritedClasses(AbstractDataExport)
{
AbstractDataExport derivedClass = Implementation.CallConstructor();
Console.WriteLine(derivedClass.name)
}
输出类似
CsvExporter
XmlExporter
?
其背后的想法是创建一个新的类,它是从 AbstractDataExport 派生出来的,这样我就可以自动迭代所有的实现,并将名称添加到下拉列表中。 我只是想在不改变项目中任何其他内容的情况下编写派生类,重新编译,宾果!
如果你有其他的解决办法: 告诉他们。
谢谢