我有以下课程:
public class Foo : IFoo
{
public Foo(IBar[] bars);
}
IBar有多个实现都在UnityContainer中注册。 当我调用
UnityContainer.Resolve()时,我希望容器将所有已知的IBar实现注入对象。
我怎样才能做到这一点?
答案 0 :(得分:5)
只要您的注册类型已应用名称:
container.RegisterType<IBar, ActualBar>("ActualBar");
container.RegsiterType<IBar, YetAnotherBar>("YetAnotherBar");
如你所说,给出一个合适的公共构造函数:
public Foo(IBar[] bars)
{
}
Unity将负责将所有已命名的已注册实例解析为开箱即用的构造函数。
Foo foo = container.Resolve<Foo>();