如何在PRISM中获取模块实例

时间:2011-10-25 09:07:07

标签: module prism instance

我有一个PRISM桌面应用程序,它借助DirectoryModuleCatalog从目录中加载模块。

一切都很好,除了我找不到获取加载模块实例的方法。 IModuleManager和IModuleCatalog没有 getInstance(ModuleInfo)等方法。

moduleManager.LoadModule(moduleInfo.ModuleName);

此行正确加载模块(moduleManager属于IModuleManager类型),但是我需要做什么才能获得此模块的实际实例?

模块是根据用户的要求加载的,所以我无法在启动时在启动时注册所有模块。

1 个答案:

答案 0 :(得分:4)

如果通过Module实例表示实现IModule的类,那么必须将实例显式注册到容器中才能获得它。

虽然前面提到了,但你根本不应该采用这种方法。我们的想法是模块类特定于特定模块,并且只应用于模块初始化目的。

我将每个模块的Start方法放在一个单独的组件(IStartable)中,使用不同的Id注册容器中的每个组件并解析/导入IEnumerable以获取具有start方法的所有实例。

希望这有帮助