.net core 實現注冊同一服務類型的多個服務實例
1. 注冊服務。給 IMyDependency 注冊兩個不同的實現。
builder.Services.AddSingleton<IMyDependency, MyDependency>(); builder.Services.AddSingleton<IMyDependency, DifferentDependency>();
2. 依賴注入。通過 IEnumerable<IMyDependency> 獲取兩個不同的實現,這里會按注冊的順序獲取對應的實現;
[ApiController]
[Route("[controller]/[action]")]
public class TestController : ControllerBase
{
private readonly IMyDependency _myDependency;
private readonly IMyDependency _differentDependency;
public TestController(IEnumerable<IMyDependency> dependencys)
{
var dependencyArray = dependencys.ToArray();
_myDependency = dependencyArray[0];
_differentDependency = dependencyArray[1];
}
[HttpGet]
public string Name()
{
return _myDependency.GetName();
}
[HttpGet]
public string OtherName()
{
return _differentDependency.GetName();
}
}
3. 檢驗效果。可以看到,第一個方法返回了 Name01,第二方法返回了 Name02。實現了一個接口多個實現的效果。

4. 另外
這里使用的是 .net 6, 若是 .net 8 則可以使用 AddKeyedSingleton 來實現注冊同一服務類型的多個服務實例。

浙公網安備 33010602011771號