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

本文关键字:类型 接口 一个 UnityContainer | 更新日期: 2023-09-27 18:27:37

我有以下类:

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

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

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

我怎样才能做到这一点?

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

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

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

正如你所提到的,给定一个合适的公共构造函数:

public Foo(IBar[] bars)
{
}

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

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