You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PRISM 7中如何获取适配Unity配置Configure方法的容器实例

解决Prism 7中Unity容器配置类型不匹配的问题

这个问题的核心是版本不兼容:Prism 7 默认使用的是新版 Unity 容器(命名空间 Unity),而你用来加载配置的 UnityConfigurationSection 属于旧版的 Microsoft.Practices.Unity.Configuration 包,它依赖的是旧版 Unity 容器(命名空间 Microsoft.Practices.Unity),两个版本的 IUnityContainer 是完全不同的类型,所以编译器会报转换错误。

下面是两种可行的解决办法,优先推荐第一种:


方案1:升级到新版Unity的配置体系(推荐)

新版 Unity(5.x 及以上)提供了自己的配置包,完全适配 Prism 7 使用的容器类型,步骤如下:

  1. 更新NuGet包

    • 移除旧的 Microsoft.Practices.Unity 和 Microsoft.Practices.Unity.Configuration 包
    • 安装 Unity.Configuration(新版Unity的配置包)和 Prism.Unity(确保是适配Prism 7的版本)
  2. 修改配置文件的命名空间
    将原有配置节的 xmlns 替换为新版Unity的命名空间:

    <unity xmlns="http://schemas.unitycontainer.org/configuration">
      <container>
        <register type="IProductInfo, Core.Interface" mapTo="Classes.ProductInfo, Core">
          <constructor>
            <param name="Name" value="Product Name" />
            <param name="Version" value="V1.2.65.30865" />
          </constructor>
        </register>
      </container>
    </unity>
    
  3. 修改代码加载配置
    使用新版Unity的API来加载配置,此时 containerRegistry.GetContainer() 返回的 Unity.IUnityContainer 可以直接传入 Configure 方法:

    using Unity;
    using Unity.Configuration;
    using System.Configuration;
    
    public partial class App : PrismApplication 
    {
      protected override void RegisterTypes(IContainerRegistry containerRegistry) 
      {
        var unityContainer = containerRegistry.GetContainer();
        var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        var section = (UnityConfigurationSection)config.GetSection("unity");
        section?.Configure(unityContainer);
      }
    }
    

方案2:强制使用旧版Unity容器(不推荐)

如果因为历史原因必须保留旧版的 Microsoft.Practices.Unity 栈,你需要让 Prism 7 使用旧版容器,但这会增加复杂度且容易引发版本冲突:

  1. 确保安装的 Prism.Unity 版本是适配旧版Unity的(注意:Prism 7 大部分版本已经切换到新版Unity,可能需要找兼容旧版的特定版本)
  2. 自定义容器扩展,将 Prism 的容器抽象映射到旧版 Microsoft.Practices.Unity.IUnityContainer

这种方式维护成本很高,除非有特殊需求,否则不建议采用。


内容的提问来源于stack exchange,提问作者Danila Kireev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:12:45