创建指定继承类型的实例
本文关键字:实例 类型 继承 创建 | 更新日期: 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 方法。
如果这两个建议都不起作用,您将不得不更详细地解释您的问题。
萨沙