Разрешение нескольких сервисов с использованием инжектора конструктора с помощью Windsor в MVC3 - PullRequest
0 голосов
/ 19 февраля 2012

У меня есть контроллер, который берет экземпляр ICustomerService.Конструктор для одной из моих реализаций (хорошо, единственная atm реализации) принимает массив экземпляров ICustomerExporter.

Я регистрирую все реализации ICustomerExporter, используя следующий код:

_container.Register(AllTypes
    .FromAssembly(typeof(ICustomerExporter).Assembly)
    .BasedOn<ICustomerExporter>().LifestyleSingleton());

И моя реализация DefaultCustomerService выглядит следующим образом:

public DefaultCustomerService(ISession session, ICustomerExporter[] exporters)
{
    this._session = session;
    this._exporters = exporters;
}

Однако, когда я пытаюсь запустить приложение, я получаю следующую ошибку:

PM.Services.Implementation.DefaultCustomerService' is waiting for the following  
dependencies: - Service 'PM.Services.ICustomerExporter[]' which was not registered.

Ну, довольно ясно, что она зарегистрирована, я могудаже остановитесь в отладчике и проверьте в списке компонентов контейнера, что реализация ExcelCustomerExporter есть.Так почему я получаю это сообщение об ошибке?

Ответы [ 2 ]

1 голос
/ 19 февраля 2012

Похоже, вы регистрируетесь на ICustomerExporter, но я не знаю, что Виндзор предположит, что реализация ICustomerExporter всегда удовлетворит вашу зависимость ICustomerExporter [].Вы также пытались зарегистрировать зависимость ICustomerExporter []?

0 голосов
/ 23 февраля 2012

Просто чтобы ответить на этот вопрос для всех, кто придет, при регистрации нескольких подобных сервисов вы должны сделать 2 вещи:

...