[英]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.