且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

.NET Core 依赖注入 ->获取接口的所有实现

更新时间:2023-01-11 10:01:08

只需将所有IRule实现一一注册即可;Microsoft.Extensions.DependencyInjection (MS.DI) 库可以将其解析为 IEnumerable.例如:

It's just a matter of registering all IRule implementations one by one; the Microsoft.Extensions.DependencyInjection (MS.DI) library can resolve it as an IEnumerable<T>. For instance:

services.AddTransient<IRule, Rule1>();
services.AddTransient<IRule, Rule2>();
services.AddTransient<IRule, Rule3>();
services.AddTransient<IRule, Rule4>();

消费者:

public sealed class Consumer
{
    private readonly IEnumerable<IRule> rules;

    public Consumer(IEnumerable<IRule> rules)
    {
        this.rules = rules;
    }
}

注意:MS.DI 支持的唯一集合类型是 IEnumerable.

NOTE: The only collection type that MS.DI supports is IEnumerable<T>.