[英]Does ASP.NET Core's DI container assures order of services?
當我使用相同的接口向DI容器注冊多個服務,然后請求一個IEnumerable<IService>
,容器是否保證注冊的順序將是集合的順序? 因為這似乎是行為,但我在文檔中找不到任何關於它的信息。
示例 - 假設我們有這個接口:
public interface IStep
{
void Execute();
}
以及一些實現:
public class FirstStep : IStep { ... }
public class SecondStep : IStep { ... }
public class ThirdStep : IStep { ... }
...
我們將它們注冊到容器中:
services.AddTransient<IStep, FirstStep>();
services.AddTransient<IStep, SecondStep>();
services.AddTransient<IStep, ThirdStep>();
最后請求IStep
的集合:
public class Plan
{
private readonly IEnumerable<IStep> steps;
public Plan(IEnumerable<IStep> steps)
{
this.steps = steps;
}
public void Execute()
{
foreach (var step in steps)
{
step.Execute();
}
}
}
假設步驟將根據注冊順序執行是否可以? 如果不是,那么實現類似管道行為的最佳方法是什么?
是的,它確實。 訂單以注冊訂單為准,有保障
是的,它們按順序執行,閱讀更多信息: https : //docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-3.1
編輯:更具體的鏈接: https : //docs.microsoft.com/en-us/aspnet/core/fundamentals/startup?view= aspnetcore-3.1#extend-startup-with-startup- filters
感謝@Sai Puli
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.