2014-10-24 2 views
0

У меня есть следующий класс:UnityContainer разрешить все типы для одного интерфейса

public class Foo : IFoo 
{ 
    public Foo(IBar[] bars); 
} 

IBar имеет несколько реализаций, которые все зарегистрированные в UnityContainer. Когда я звоню

UnityContainer.Resolve()
Я хочу, чтобы контейнер вводил все известные реализации IBar в объект.

Как я могу это достичь?

ответ

1

До тех пор, пока ваши зарегистрированные типы имеют название применяется к ним:

container.RegisterType<IBar, ActualBar>("ActualBar"); 
container.RegsiterType<IBar, YetAnotherBar>("YetAnotherBar"); 

И дал правильный общественный конструктор, как вы говорите:

public Foo(IBar[] bars) 
{ 
} 

Единство будет заботиться о решении всех именовал зарегистрированные экземпляры в ваш конструктор из коробки.

Foo foo = container.Resolve<Foo>(); 
+0

Спасибо, добавив название к типу работы. – Rhabarbertoast

+1

Зачем ему нужно имя? Я хочу сказать, что он будет работать даже без имени! – disklosr

Смежные вопросы