Хобрук: Ваш путь к мастерству в программировании

Сборки переплета Castle Windsor Service

Предупреждение: я действительно новичок в Виндзоре.

У меня есть 1 решение с несколькими проектами. У меня есть проект, который содержит все наши интерфейсы (названные "Framework") и другие, содержащие конкретные реализации этих интерфейсов. Я пытаюсь заставить Windsor связать их и разрешить мои интерфейсы следующим образом:

Один из других проектов называется «Заказы», ​​в нем есть класс Order, который реализует IOrder, определенный в проекте фреймворков. Между двумя проектами есть ссылка, и она компилируется.

У меня есть другой проект с фактическим вызовом Windsor, для которого я создал установщик:

public class CoreInstaller : IWindsorInstaller
  {
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(
          AllTypes.FromAssemblyNamed("Framework"),
          AllTypes.FromAssemblyNamed("Orders")
        );
    }
  }

Я создаю контейнер Windsor как таковой:

new WindsorContainer().Install(new CoreInstaller());

Когда я пытаюсь разрешить IOrder, происходит сбой:

Castle.MicroKernel.ComponentNotFoundException: Компонент для поддержки службы Framework.IOrder не найден

Я также пытался перевернуть проекты в функции установки, чтобы сначала загрузить Orders, но получаю ту же ошибку.

Кто-нибудь из пользователей Windsor может мне помочь?


  • К вашему сведению, Classes функционально эквивалентны AllTypes, но понятнее, что делается. Подробнее 10.11.2012
  • Будьте осторожны с этим использованием. Вы регистрируете все типы как синглтоны (образ жизни по умолчанию). У вас могут быть проблемы с потоками. 10.11.2012

Ответы:


1

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

Например...

container.Register(
    Classes.FromAssemblyNamed("Framework").Pick(),
    Classes.FromAssemblyNamed("Orders").Pick()
);
09.11.2012
  • Это противно. Я думаю, что код @OnResolve имеет смысл, и это #fail, он не работает. Я бы зарегистрировал это в системе отслеживания проблем, чтобы кто-то реализовал, или, что еще лучше, отправил бы запрос на вытягивание;) 12.11.2012
  • Это просто дизайнерское решение, и я уверен, что существует техническая причина, по которой FromAssemblyDescriptor не регистрирует классы напрямую. Я согласен, что это неочевидно и могло бы быть названо лучше в таком Fluent API, но я уверен, что у них были свои причины. 12.11.2012
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..