簡體   English   中英

從 PRISM 7 的配置文件中檢索統一容器類型注冊

[英]Retrieve unity container type registration from configuration file in PRISM 7

統一容器的配置部分:

<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 上已經有一個關於相同問題的類似問題。 但是,答案並沒有為上述實例化問題提供解決方案。

您正在使用不兼容的庫。 UnityConfigurationSection需要一個Microsoft.Practices.Unity.IUnityContainer (來自舊的統一版本,最有可能是三樣東西),而GetContainer產生一個Unity.IUnityContainer (來自最近的統一)。

您應該升級Unity.Configuration package 或降級Prism ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM