在类上创建模块

时间:2015-03-02 03:35:38

标签: c#

我有一个名为Version的班级。它有关于应用程序如何工作的信息依赖于所选子版本的产品。对于每个子产品,我都有模块。所以我创建了一个名为Module的抽象类。每个模块都继承自这个类。例如:People: ModuleChecklist: 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));
    }
}

0 个答案:

没有答案