【发布时间】:2011-07-21 16:00:47
【问题描述】:
我有一个抽象类:
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()
{
...
}
}
有可能做这样的事情吗? (伪代码:)
foreach (Implementation imp in Reflection.GetInheritedClasses(AbstractDataExport)
{
AbstractDataExport derivedClass = Implementation.CallConstructor();
Console.WriteLine(derivedClass.name)
}
输出类似
CsvExporter
XmlExporter
?
这背后的想法是创建一个从 AbstractDataExport 派生的新类,这样我就可以自动迭代所有实现并将例如名称添加到下拉列表中。 我只想对派生类进行编码,而不更改项目中的任何其他内容,重新编译,宾果游戏!
如果您有其他解决方案:告诉他们。
谢谢
【问题讨论】:
标签: c# reflection inheritance