我有一个名为Version
的班级。它有关于应用程序如何工作的信息依赖于所选子版本的产品。对于每个子产品,我都有模块。所以我创建了一个名为Module
的抽象类。每个模块都继承自这个类。例如:People: Module
,Checklist: Module
等
我的问题是我需要获得Module over Version的唯一实例。所以我做到了:
class Version {
private Dictionary<string, Module> LoadedModules = new ...;
public GetModule(Type paramModuleType) {
// If instance yet was created, so return it.
if(LoadedModules.ContainsKey(paramModuleType.Name)) {
return LoadedModules[paramModuleType.Name];
}
// Else, it will be created and stored for next call.
return LoadedModules[paramModuleType.Name] =
(Module) Activator.CreateInstance(paramModuleType, this);
}
}
但我想直接使用模块获取版本模块。例如:
var clientModule = ClientModule.From(versionInstance);
我尝试在From(Version paramVersion)
抽象类上创建一个名为Module
的方法,但它不起作用。我认为我这样做是错误的。
public abstract class Module {
public Version Version;
protected Module(Version paramVersion) {
Version = paramVersion;
}
static public Module From(Version paramVersion) {
return paramVersion.GetModule(typeof(Module));
}
}