【发布时间】:2011-10-25 09:07:06
【问题描述】:
我有一个 PRISM 桌面应用程序,它在 DirectoryModuleCatalog 的帮助下从目录加载模块。
一切都很好,除了我找不到获取已加载模块实例的方法。 IModuleManager 和 IModuleCatalog 没有类似 getInstance(ModuleInfo) 或类似的方法。
见
moduleManager.LoadModule(moduleInfo.ModuleName);
这一行正确加载了模块(moduleManager 的类型为 IModuleManager),但是接下来我需要做什么才能获得该模块的实际实例?
模块是根据用户的需要加载的,所以我无法在启动时在引导程序中注册所有模块。
【问题讨论】:
-
为什么需要模块实例?请描述您的问题,而不是您想到的解决方案。
-
@PVitt 加载的模块实现了一个特定的接口,我需要在所有这些加载的模块实例上调用 start() 方法。
-
为什么必须在所有模块上调用 start?
-
因为用户可以选择多个模块,所有模块都可以在运行中启动和停止。如果用户想一次停止说 3 个模块,我必须在这些模块上调用 stop() ,以便它们改变它们的状态。真的没有办法至少获得加载模块的类型吗?我什至无法使用统一容器注册模块?!
-
我认为你应该问一个问题“如何在运行时加载和卸载 prism 模块”。