【发布时间】:2020-11-05 14:16:29
【问题描述】:
我想删除 BuildServiceProvider 方法的重复单例服务。我知道我应该使用现有的 DI 服务,但我无法访问 GetService 方法。我是 DI 的新手,如果有人能说出如何在不获取新服务的情况下访问 GetService 方法,我将不胜感激。代码如下。谢谢。
MESSAGE:从应用程序代码中调用“BuildServiceProvider”会导致创建一个额外的单例服务副本。考虑将依赖注入服务等替代方案作为“配置”的参数。
public void ConfigureServices(IServiceCollection services){
services.AddAuthorization(options =>
{
var sp = services.BuildServiceProvider();//CODE ISSUE HERE
var permissionService = sp.GetService<IPermissionService>();
if (permissionService != null)
{
foreach (var permission in permissionService.GetPrivilegePermissions().Select(x => x.Name)
.Distinct())
{
options.AddPolicy(permission, policy => policy.Requirements.Add(new
PermissionRequirement(permission)));
}
}
});
}
【问题讨论】:
标签: c# .net-core dependency-injection