我在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。
答案 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