Предотвращение уничтожения пространств имен верхнего Config при загрузке и настройке других .config в Unity - PullRequest
0 голосов
/ 11 мая 2011

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

Я создал 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 Ответ

0 голосов
/ 11 мая 2011

ОК, я думаю, у меня есть хорошее решение. Для моего расширения я могу просто полностью определить тип, и он будет работать. то есть.

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

Может быть, не самая красивая вещь в мире, но это делает работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...