Предотвращение уничтожения пространств имен top Config при загрузке и настройке other .config в Unity

#c# #configuration #dependency-injection #unity-container #ioc-container

#c# #конфигурация #внедрение зависимостей #unity-контейнер #ioc-контейнер

Вопрос:

Это несколько специфическая и сложная для объяснения ситуация, так что потерпите меня.

Я создал UnityContainerExtension, который отвечает за загрузку и настройку других файлов .config.

Например, мой файл 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, я, конечно, был бы открыт и для этого решения.

Ответ №1:

Хорошо, я думаю, у меня есть подходящее решение. Для моего расширения я могу просто полностью указать тип, и оно будет работать. ie.

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

Возможно, это не самая красивая вещь в мире, но она выполняет свою работу.