问题描述
我正在尝试对AuthenticationStateProvider使用范围服务,以在解决方案的不同类中获取用户详细信息。 用作范围服务的服务类如下所示:
public class ServiceClass
{
private readonly AuthenticationStateProvider _authenticationStateProvider;
public ServiceClass(AuthenticationStateProvider authenticationStateProvider)
{
_authenticationStateProvider = authenticationStateProvider;
}
public async Task<string> GetIdentity()
{
var authState = await _authenticationStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
return user.Identity.Name;
}}
我在启动时将类注册为这样的作用域服务:
services.AddScoped<ServiceClass>();
然后尝试像这样在另一个类DAL中使用服务
public class DAL
{
private readonly ServiceClass userClass;
public async Task<bool> saveBankCash(TransactionBankCashHeader master,List<TransactionBankCashDetail> lines,string Doctype)
{
string user = await userClass.GetIdentity();
}
}
但是在saveBankCash方法中,userClass为null,有人可以指导我这里有什么问题吗?
解决方法
您需要像这样向DAL添加构造函数:
public DAL(ServiceClass s)
{
userClass = s;
}
请注意,这仅在将DAL也添加到DI时才有效,如下所示:
services.AddScoped<DAL>();
然后,DI将把依赖项注入到构造函数的调用中。