【发布时间】:2020-05-26 20:58:56
【问题描述】:
我没有将注入服务注入到我的自定义 RegisterBinderProvider 中有什么原因吗?
services.AddScoped<IPasswordHasher, PasswordHasher>();
services.AddMvc(options =>
{
RegisterBinderProvider registerBinderProvider =
DependencyResolver.Current.GetService<RegisterBinderProvider>();
options.ModelBinderProviders.Insert(0, registerBinderProvider);
options.Filters.Add(typeof(ApiExceptionFilter));
});
在这段代码之后,当我在 RegisterBinderProvider 类中时,我看到 PasswordHasher 服务的值为 null。但是,我在插入RegisterBinderProvider之前检查了已经注入的服务,我可以在其中找到PasswordHasher。
如果您需要,这是我的自定义 BinderProvider:
public class RegisterBinderProvider : IModelBinderProvider
{
private readonly IPasswordHasher _passwordHasher;
public RegisterBinderProvider(IPasswordHasher passwordHasher)
{
_passwordHasher = passwordHasher;
}
public IModelBinder GetBinder(ModelBinderProviderContext context)
{
if (context.Metadata.ModelType == typeof(User))
{
return new RegisterBinder(_passwordHasher);
}
return null;
}
}
希望我提供了足够的信息来理解我的问题,谢谢!
【问题讨论】:
标签: c# asp.net-mvc model-binding .net-core-3.1 custom-model-binder