UnityContainer解析一个接口的所有类型

时间:2014-10-24 08:14:38

标签: c# dependency-injection unity-container

我有以下课程:

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

IBar有多个实现都在UnityContainer中注册。 当我调用

UnityContainer.Resolve()
时,我希望容器将所有已知的IBar实现注入对象。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:5)

只要您的注册类型已应用名称

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

如你所说,给出一个合适的公共构造函数:

public Foo(IBar[] bars)
{
}

Unity将负责将所有已命名的已注册实例解析为开箱即用的构造函数。

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