相关疑难解决方法(0)

获取抽象类的所有继承类

我有一个抽象类:

abstract class AbstractDataExport
{
        public string name;
        public abstract bool ExportData();
}
Run Code Online (Sandbox Code Playgroud)

我有从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()
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?(伪代码:)

foreach (Implementation imp in Reflection.GetInheritedClasses(AbstractDataExport)
{
    AbstractDataExport derivedClass = Implementation.CallConstructor();
    Console.WriteLine(derivedClass.name)
}
Run Code Online (Sandbox Code Playgroud)

输出像

CsvExporter
XmlExporter
Run Code Online (Sandbox Code Playgroud)

这背后的想法是创建一个派生自AbstractDataExport的新类,这样我就可以自动遍历所有实现并将名称添加到Dropdown-List.我只是想编译派生类而不改变项目中的任何其他内容,重新编译,宾果游戏!

如果您有其他解决方案:告诉他们.

谢谢

c# reflection inheritance

112
推荐指数
4
解决办法
9万
查看次数

标签 统计

c# ×1

inheritance ×1

reflection ×1