0

這是一些具體和困難的情況來解釋,請耐心等待。在Unity中加載和配置其他.config文件時,防止頂層Config的命名空間被擦除

我創建了一個負責加載和配置其他.config文件的UnityContainerExtension。

例如,我的app.config文件看起來是這樣的:在

<configuration> 

    <configSections> 
     <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </configSections> 

    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 

     <assembly name="SomeAssembly" /> 
     <namespace name="SomeAssembly.SomeNameSpace" /> 

     <container> 

      <extension type="ConfigSectionExtension" /> 
      <extension type="TestExtension" /> 

     </container> 

    </unity> 

    </configuration> 

我的第一個擴展ConfigSectionExtension運行的代碼(以下),其裝載和配置與其他config文件的容器。恩。

var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = "logging.config"}; 
    Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 
    ((UnityConfigurationSection)configuration.GetSection("unity")).Configure(Container); 

此代碼運行正常,但是TestExtension擴展在我的配置能不能得到解決的集裝箱已經配置了logging.config文件之後。

的特異性應答是

"The type name or alias TestExtension could not be resolved." 

如果刪除加載和配置logging.config文件與所述容器中的代碼,則這兩個擴展中找到。有什麼辦法可以做到這一點?

這實質上是我的方法來解決無法將多個.config文件鏈接在一起的問題。如果有人知道更好的方式來將.config文件鏈接到Unity,我當然也會對該解決方案開放。

回答

0

好吧,我想我有一個好的解決方案。對於我的擴展,我可以完全限定類型,它會起作用。即。

<extension type="MediaInjectorUI.ContainerExtensions.ConfigSectionExtension, MediaInjectorUI" /> 
    <extension type="MediaInjectorUI.ContainerExtensions.TestExtension, MediaInjectorUI" /> 

也許不是世界上最漂亮的東西,但它是工作。

相關問題