У меня есть класс, который принимает массив интерфейсов в конструкторе:
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, он будет работать нормально.
Есть идеи?