#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" />
Возможно, это не самая красивая вещь в мире, но она выполняет свою работу.