gpt4 book ai didi

design-patterns - 在 Startup.cs 中解析服务是服务定位器模式吗?

转载 作者:行者123 更新时间:2023-12-01 13:37:41 25 4
gpt4 key购买 nike

我已阅读 Service Locator: roles vs mechanics作者:Mark Seemann,我无法决定某事。这是GetRequiredService方法,用于 ConfigureServices Startup.cs 中的方法(这是 composition root,如果我理解正确的话),一个服务定位器:

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();

services.AddScoped<IRepository, MyRepository>();

services.AddAuthorization(options =>
{
var myPolicy = services.BuildServiceProvider()
.GetRequiredService<IRepository>().GetMyPolicy();

options.AddPolicy("MyPolicy", policy => policy.AddRequirements(myPolicy));
});
}

最佳答案

正如 Mark here 所解释的那样:

A DI container encapsulated in a Composition Root is not a Service Locator - it's an infrastructure component.


Startup类是组合根的一部分。这意味着调用 GetRequiredService不是服务定位器反模式的实现。

关于design-patterns - 在 Startup.cs 中解析服务是服务定位器模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42578732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com