![](/img/trans.png)
[英]WPF prism: Dynamically load a type from an assembly and register it with the unity container
[英]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.