【问题标题】:Prism, Unity - Converting from MEFPrism,Unity - 从 MEF 转换
【发布时间】:2011-07-29 09:35:57
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: unity-container prism ioc-container mef


    【解决方案1】:

    如您所见,您的模块应该依赖的类型取决于IUnityContainer。您实际上不必向自身注册容器以便能够在模块中使用它(如果您愿意,您可以这样做,并使事情更清晰)。最后,模块依赖独立于您正在使用的 IoC 容器,因此它应该可以正常工作。您还可以使用以下命令从 xaml 配置 ModuleCatalog:

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

    在catalog.xaml 文件中,您可以使用ModuleInfo 的DependsOn 属性指定依赖关系。

    希望这会有所帮助:)

    【讨论】:

    • @Abdoul - 在深入挖掘之后,看起来 [ModuleDependency] 属性似乎是 prism 的一部分,而不是 MEF,所以它应该仍然有效吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2023-03-09
    相关资源
    最近更新 更多