我有一个PRISM桌面应用程序,它借助DirectoryModuleCatalog从目录中加载模块。
一切都很好,除了我找不到获取加载模块实例的方法。 IModuleManager和IModuleCatalog没有 getInstance(ModuleInfo)等方法。
见
moduleManager.LoadModule(moduleInfo.ModuleName);
此行正确加载模块(moduleManager属于IModuleManager类型),但是我需要做什么才能获得此模块的实际实例?
模块是根据用户的要求加载的,所以我无法在启动时在启动时注册所有模块。
答案 0 :(得分:4)
如果通过Module实例表示实现IModule的类,那么必须将实例显式注册到容器中才能获得它。
虽然前面提到了,但你根本不应该采用这种方法。我们的想法是模块类特定于特定模块,并且只应用于模块初始化目的。
我将每个模块的Start方法放在一个单独的组件(IStartable)中,使用不同的Id注册容器中的每个组件并解析/导入IEnumerable以获取具有start方法的所有实例。
希望这有帮助