ASP.NET MVC Core DI注入服务列表

时间:2016-05-01 14:48:37

标签: c# asp.net-core-mvc

如何获得这样的新DI支持注射?

  public class Thing{

    public Thing(IList<IService> someServices) {

       ...
    }
  }

  public class ServiceA : IService { }
  public class ServiceB : IService { }
  public class ServiceB : IService { }

  public class Startup {
    ...

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddTransient<IService, ServiceA>()
                .AddTransient<IService, ServiceB>()
                .AddTransient<IService, ServiceC>();
    }
  }

2 个答案:

答案 0 :(得分:11)

从ASP.NET Core 2.0开始,如果您将依赖项注入IEnumerable<IService>而不是IList<IService>,则可以放弃注册列表本身,只留下个人服务注册。

答案 1 :(得分:5)

得到它(简化)

.AddTransient(p => p.GetServices<IService>())

但是你必须完全按照我的例子

来匹配ctor的期望
.AddTransient<IList<IService>>(p => p.GetServices<IService>().ToList())