Замок Виндзор не может внедрить массив типов интерфейса

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

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, он будет работать нормально.

Есть идеи?

12 голосов | спросил Chris Haines 29 J0000006Europe/Moscow 2009, 16:13:41

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132