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