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" /> 

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

相关问题