棱镜,团结 - 从MEF转换

时间:2011-04-04 18:31:21

标签: unity-container prism ioc-container mef

我最近由于各种原因从MEF转换为Unity。

我以前在模块中有一个IMenuService对象,我用MEF导出并导入到其他模块中。我相信我与Unity的关系是将unity容器作为参数传递给我的模块的构造函数,然后使用它来注册IMenuService,但是,我不知道如何做到这一点(什么参数类型?do我必须首先在引导程序中注册容器以将其导入模块?)

另外,在MEF中有ModuleDependency属性,以确保首先加载其他模块...... Unity中的等价物是什么?

编辑:想出了IUnityContainer参数...但是,仍然对秒部分感到好奇...依赖

1 个答案:

答案 0 :(得分:1)

正如您所知,您应该拥有模块的类型取决于IUnityContainer。你不需要自己注册容器,以便能够在模块中使用容器(如果你愿意,你可以这样做,并使事情更清晰)。最后,模块依赖项独立于您正在使用的IoC容器,因此它应该可以正常工作。您也可以使用以下命令从xaml配置ModuleCatalog

protected override IModuleCatalog CreateModuleCatalog()
{
    return ModuleCatalog.CreateFromXaml(new Uri("catalog.xaml", UriKind.Relative));
}

并在catalog.xaml文件中,您可以使用DependsOn的{​​{1}}属性指定依赖项。

希望这有助于:)