如何获得这样的新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>();
}
}
答案 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())