Dot-Net
.NET Core 依賴注入 -> 獲取介面的所有實現
我有一個名為 IRule 的介面和多個實現該介面的類。我想使用 .NET Core 依賴注入容器來載入 IRule 的所有實現,所以所有實現的規則。
不幸的是,我無法完成這項工作。我知道我可以將一個注入
IEnumerable<IRule>到控制器的 ctor 中,但我不知道如何在 Startup.cs 中註冊此設置
只需一個一個註冊所有
IRule實現即可;Microsoft.Extensions.DependencyInjection (MS.DI) 庫可以將其解析為IEnumerable<T>. 例如: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<T>.