刚开始使用Prism并依靠MSDN文档来教我 - 特别是那些段落让我很困惑,关于模块的主题
"加载并初始化模块后,无法卸载模块程序集,因为Prism不会保存模块实例引用,因此初始化完成后模块类实例可能会被垃圾收集"
和
"默认情况下,模块实例生存期是短暂的 - 调用Initialize后,将释放对模块的引用。如果您不手动建立模块实例的强引用链,它将被垃圾收集"
我对此有点困惑 - 这有什么含义?IModule派生类是类库的实际实现还是只是负责Prism加载实际类库的元数据类,一旦将程序集加载到AppDomain中,就可以从中调用代码随时?
我感到很困惑 - 现在,我从这两段中得到的结论是,每次在Prism应用程序中使用模块时都需要重新实例化模块?
答案 0 :(得分:3)
派生自IModule
的类应包含一次性初始化代码,例如使用区域注册视图。加载模块时,会创建IModule
派生类的实例,调用Initialize
方法,然后将模块视为已加载。 <{1}}派生类的实例在初始化后丢失,但模块仍可访问。
底线:不,每次使用时都不需要重新加载/初始化模块。它只加载/初始化一次然后应该全部设置。