Unity не регистрирует сборку из файла конфигурации

Я знаю, как зарегистрировать сборку в загрузчике с помощью override --> protected override void ConfigureContainer()

но я хочу зарегистрировать его в файле конфигурации

я добавляю раздел единства в app.confg

  <register type="namespace.Iinterface, assembly, Version=1.0.0.0, Culture=neutral"
            mapTo="namespace.class,assembly">
    <lifetime type="singleton" />
    <constructor>
      <param name="file" value="xml"/>
    </constructor>
  </register>

</container>

этот класс не регистрирует, что мне не хватает?


person shlomtzi    schedule 13.06.2011    source источник
comment
при попытке разрешить он сказал, что тип не зарегистрирован   -  person shlomtzi    schedule 14.06.2011


Ответы (1)


Я не уверен, что понимаю, что вы подразумеваете под «зарегистрировать сборку», поскольку эта терминология не используется нигде в библиотеке Unity, документах или базе кода. Я предполагаю, что вы просто хотите загрузить свою конфигурацию.

Предполагая, что вы находитесь в правильном файле конфигурации (app.config/web.config для приложения, .dll не имеют файлов конфигурации), вам необходимо:

  1. Ссылайтесь на Microsoft.Practices.Unity.Configuration.dll в своем проекте.
  2. Добавьте «using Microsoft.Practices.Unity.Configuration» в начало исходного файла, содержащего код инициализации вашего контейнера.
  3. Вызов:

    контейнер.ЗагрузитьКонфигурацию();

Это загрузит вашу конфигурацию из элемента контейнера по умолчанию (без имени) из раздела по умолчанию (с именем unity) в файле конфигурации по умолчанию. Если вы хотите отличаться от этих значений по умолчанию, есть множество параметров для настройки.

Container.LoadConfiguration — это метод расширения, поэтому, если вы пропустите оператор using (шаг 2 выше), вызов не скомпилируется.

person Chris Tavares    schedule 14.06.2011
comment
файл конфигурации загружен, что я хочу сделать, это зарегистрировать тип/класс/интерфейс, чтобы использовать его в коде, что означает, что позже будет выполнено resolve‹›(). поэтому я регистрирую свой интерфейс в конфигурации, и он не зарегистрирован в контейнере. - person shlomtzi; 14.06.2011
comment
Тогда мне действительно нужно увидеть небольшой, но полный пример, демонстрирующий проблему, включая код, загружающий конфигурацию, и код, вызывающий разрешение. - person Chris Tavares; 14.06.2011