0

统一容器的配置部分:

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<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>

这些类型在App.xaml.cs文件中注册:

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

但是,由于 PRISM 7 版本中内置的容器抽象,容器实例与方法中所需的参数不匹配Configure。编译器会产生以下错误:

错误 CS1503 参数 1:无法从“Unity.IUnityContainer”转换为“Microsoft.Practices.Unity.IUnityContainer”

问题:如何检索正确的容器实例以作为Configure方法的参数传递

Ps在 StackOverflow上已经有一个关于相同问题的类似问题。但是,答案并没有为上述实例化问题提供解决方案。

4

1 回答 1

1

您正在使用不兼容的库。UnityConfigurationSection期望 a Microsoft.Practices.Unity.IUnityContainer(来自旧的统一版本,最有可能是三样东西),而GetContainer产生 a Unity.IUnityContainer(来自最近的统一)。

您应该升级您的Unity.Configuration软件包或降级Prism...

于 2020-06-09T12:37:26.787 回答