创建指定继承类型的实例

本文关键字:实例 类型 继承 创建 | 更新日期: 2024-11-06 16:06:25

我在模块类库中有一个名为模块的类。

public class Module{}

以及像这样的实现。

public class ModuleA: Module{...}
public class ModuleB: Module{...}
public class ModuleC: Module{...}

我想创建一个将创建实例的类,并给我一个从Module类继承的列表。

public class ModulesFactory{
  public IList<Module> GetModules(){
   ???????
   ???????
  }
}

我无法在类库中选择继承的小卡。

创建指定继承类型的实例

Yo 可以创建一个泛型方法,如下所示:

    public static IEnumerable<TModule> GetModules<TModule>()
    {
        var moduleType = typeof (TModule);
        var dependencyModuleTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(moduleType)).Select(p=>(TModule)Activator.CreateInstance(p));
        return dependencyModuleTypes;
    }

如果程序集选择是当前程序集?

我不清楚您是否有静态列表或只知道类的名称。为什么你不能只使用新的模块A()并将其添加到你返回的列表中?

如果您只知道名称,则可以使用 Activator.CreateInstance 方法。

如果这两个建议都不起作用,您将不得不更详细地解释您的问题。

萨沙