首先簡單描述下問題。
Unity配置好conifg啟動專案進行依賴注入時報錯,錯誤資訊(錯誤資訊如下)就是無法決議DLL檔案。
InvalidOperationException: The type name or alias Database.LinqDB,Database could not be resolved.Please check your configuration file and verify this type name.
一開始我以為是組態檔寫的有問題,可是再測驗的程序中我發現只要是參考專案生成的DLL就可以正常運行,一旦取消參考就報錯。
然后我又經過了一番嘗試,發現用Assembly加載一次檔案也可以正常通過。但是用Assembly.load(File.ReadAllBytes())就又不行了……
請問各位大佬,這究竟是哪里有問題?DLL每次都確保復制到Debug目錄下了,檔案肯定是存在的就是不能決議。
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "DatabaseConfig.xml");//找組態檔的路徑
var configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName);
_iUnityContainer = new UnityContainer();
foreach (var container in section.Containers)
{
_iUnityContainer.LoadConfiguration(section, container.Name);
}
這是加載組態檔的代碼,報錯是在_iUnityContainer.LoadConfiguration(section, container.Name);這里加載時出的問題。
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration" />
</configSections>
<unity>
<sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Unity.Interception.Configuration" />
<containers>
<container name="DatabaseContainer">
<extension type="Interception" />
<register type="IDatabase.ILinqDB,IDatabase" mapTo="Database.LinqDB,Database" />
</container>
</containers>
</unity>
</configuration>
以上是配置注冊檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/266540.html
標籤:C#
下一篇:C# 方法引數呼叫問題
