[英]Blazor FluentValidation how to Inject dependency to AbstractValidator
I am using FluentValidator for a current Blazor-Server Project.我正在为当前的 Blazor-Server 项目使用 FluentValidator。
Now i need to inject my database service class for validate duplication and stuff like that.现在我需要注入我的数据库服务 class 来验证重复和类似的东西。
public class StockValidator : AbstractValidator<LagertypModel>
{
private StockOverviewService _stockservice;
public StockValidator(StockOverviewService stockservice)
{
_stockservice = stockservice;
RuleFor(LagertypModel => LagertypModel.Lagertyp).NotEmpty().MaximumLength(4).Must(Lagertyp => {
return _stockservice.validateStockTypeCU(Lagertyp).Result;
});
}
}
But when i do that i get the error that StockValidator needs to have a parameterless contructor.但是当我这样做时,我得到 StockValidator 需要有一个无参数构造函数的错误。
How can i inject my dependency now?我现在如何注入我的依赖?
Where you instantiate your StockValidator class make sure you pass your service into it like so:在你实例化你的StockValidator class 的地方,确保你像这样将你的服务传递给它:
Program.cs程序.cs
builder.Services.AddSingleton<StockOverviewService>();
StockOverviewService.cs StockOverviewService.cs
private StockValidator_validator;
public StockOverviewService(LiveConnectionString connectionString)
{
_connectionString = connectionString;
_validator = new StockValidator(this);
}
StockValidator.cs StockValidator.cs
public class StockValidator : AbstractValidator<LagertypModel>
{
private StockOverviewService _stockservice;
public StockValidator(StockOverviewService stockservice)
{
_stockservice = stockservice;
RuleFor(LagertypModel => LagertypModel.Lagertyp).NotEmpty().MaximumLength(4).Must(Lagertyp => {
return _stockservice.validateStockTypeCU(Lagertyp).Result;
});
}
}
Assuming your StockOverviewService uses async methods for accessing a DB/Api, I don't recommend this approach because you're making the code run synchronously here:假设您的StockOverviewService使用异步方法访问 DB/Api,我不推荐这种方法,因为您要让代码在这里同步运行:
return _stockservice.validateStockTypeCU(Lagertyp).Result;
but it will work.但它会起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.