我最近由于各种原因从MEF转换为Unity。
我以前在模块中有一个IMenuService对象,我用MEF导出并导入到其他模块中。我相信我与Unity的关系是将unity容器作为参数传递给我的模块的构造函数,然后使用它来注册IMenuService,但是,我不知道如何做到这一点(什么参数类型?do我必须首先在引导程序中注册容器以将其导入模块?)
另外,在MEF中有ModuleDependency属性,以确保首先加载其他模块...... Unity中的等价物是什么?
编辑:想出了IUnityContainer参数...但是,仍然对秒部分感到好奇...依赖
答案 0 :(得分:1)
正如您所知,您应该拥有模块的类型取决于IUnityContainer
。你不需要自己注册容器,以便能够在模块中使用容器(如果你愿意,你可以这样做,并使事情更清晰)。最后,模块依赖项独立于您正在使用的IoC容器,因此它应该可以正常工作。您也可以使用以下命令从xaml配置ModuleCatalog
:
protected override IModuleCatalog CreateModuleCatalog()
{
return ModuleCatalog.CreateFromXaml(new Uri("catalog.xaml", UriKind.Relative));
}
并在catalog.xaml
文件中,您可以使用DependsOn
的{{1}}属性指定依赖项。
希望这有助于:)