创建指定的继承类型的实例

时间:2015-03-10 06:56:58

标签: c# .net reflection

我在Modules类库中有一个名为module的类。

public class Module{}

这样的实现。

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

我想创建一个创建实例的类,并为我提供一个继承自Module类的列表。

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

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

2 个答案:

答案 0 :(得分:1)

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;
    }

如果装配选择是当前装配?

答案 1 :(得分:0)

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

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

如果两项建议都不起作用,请务必更详细地解释您的问题。

的Sascha