我在 Prism 中遇到了一些奇怪的 MEF 行为,我无法真正解释。我找到了一种我不太满意的解决方法,所以我真的很想了解是什么原因造成的。
PartCreationPolicy
我已经用of声明了我的 shell 窗口类NonShared
。我正在尝试使用CompositionContainer.GetExportedValue<>()
我的函数MefBootstrapper
来创建一个新的 Shell 实例。
奇怪的是,如果我在创建 shell 之前调用,每次调用它都会Container.GetExportedValue<>()
得到一个 type 的新对象。Shell
但是,一旦 shell 被初始化,重复调用以Container.GetExportedValue<>()
返回相同的 Shell 实例。
就好像外壳初始化以某种方式将我的外壳导出重新注册为共享。
但是,我在引导程序代码中没有看到任何明确尝试实现此目的的调用。
谁能解释一下:
- 什么动作有这个副作用
- 如何(如果可能)恢复
NonShared
行为,以便我可以使用 MEF/ServiceLocator 创建多个 shell。
干杯,
标记