Подтвердить что ты не робот

Castle Windsor не может вводить множество типов интерфейсов

У меня есть класс, который принимает в конструкторе массив интерфейсов:

public class Foo<T1, T2> : IFoo<T1, T2>
{
    public Foo(IBar[] bars)
    {
        ...
    }
}

Моя регистрация контейнера выглядит следующим образом:

container.Register(AllTypes.Pick().FromAssemblyNamed("...")
                    .WithService.FirstInterface());
container.AddComponent("foo", typeof(IFoo<,>), typeof(Foo<,>));

У меня есть несколько реализаций IBar, и контейнер может определенно найти их, так как вызов ServiceLocator.Current.GetAllInstances<IBar>() работает нормально.

Однако, если я пытаюсь получить экземпляр IFoo, он выдает исключение, говорящее, что он не может удовлетворить deoendency... ", который не был зарегистрирован".

Если я изменю конструктор, чтобы взять один экземпляр IBar, он отлично работает.

Любые идеи?

4b9b3361

Ответ 1

Добавьте ArrayResolver:

container.Kernel.Resolver.AddSubResolver(new ArrayResolver(container.Kernel));