2011-04-04 59 views
1

我最近从MEF转换为Unity - 出于各种原因。棱镜,统一 - 从MEF转换

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

另外,在MEF中,还有ModuleDependency属性以确保其他模块首先被加载......在Unity中,同样的东西会是什么?

编辑:想通了IUnityContainer说法...但是,仍然好奇秒部分...依赖

回答

1

因为你已经想通了,你应该有你的模块类型依赖于IUnityContainer。你并不需要注册这个容器,以便能够在模块中使用它(如果你想要的话,你可以做它,并使事情更清晰)。最后,模块依赖关系独立于您正在使用的IoC容器,所以它应该工作得很好。您可以使用以及配置从XAML中ModuleCatalog

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

,并在catalog.xaml文件,你可以使用ModuleInfoDependsOn属性中指定的依赖关系。

希望这有助于:)

+0

@Abdoul - 挖多一点之后,它看起来好像[ModuleDependency]属性是棱镜的一部分,而不是MEF,所以应该仍然正常工作呢? – 2011-04-04 19:23:50

+0

是的,确切地说,它应该工作得很好。 – AbdouMoumen 2011-04-04 20:23:21