3

刚开始使用 Prism 并依靠 MSDN 文档来教我——关于模块的主题,现在有一些特别让我感到困惑的段落

“加载和初始化模块后,模块程序集无法卸载,因为模块实例引用不会被 Prism 持有,因此模块类实例可能在初始化完成后被垃圾收集”

“模块实例的生命周期默认是短暂的——调用Initialize后,对模块的引用被释放。如果你不手动为模块实例建立强引用链,它将被垃圾回收”

我对此有点困惑 - 这意味着什么?

IModule 派生类是您的类库的实际实现,还是只是负责 Prism 加载您的实际类库的元数据类,一旦您的程序集加载到 AppDomain 中,您就可以随时从中调用代码?

我很困惑——现在,我从这两段中得出的结论是,每次在整个 Prism 应用程序中使用模块时都需要重新实例化它们?

4

1 回答 1

3

派生自的类IModule应包含一次性初始化代码,例如向区域注册视图。IModule加载模块时,会创建派生类的实例,Initialize调用方法,然后将模块视为已加载。派生类的实例IModule在初始化后丢失,但模块仍然可以访问。

底线:不,模块不必在每次使用时都重新加载/初始化。它只加载/初始化一次,然后应该全部设置。

于 2012-08-01T01:58:36.370 回答