公共类 SubmitCarValidator : AbstractValidator { 私人只读 ICarRepository _carRepository;
public SubmitCarValidator(ICarRepository carRepository)
{
_carRepository = carRepository;
RuleFor(x => x.Parts).NotNull().SetAsyncValidator(
new CarPartsValidator(_carRepository));
// getting build err
}
}
public class CarPartsValidator : AbstractValidator<SubmitCarRequest>
{
private readonly ICarRepository _carRepository;
public CarPartsValidator(ICarRepository carRepository)
{
... doing actual async db check
RuleFor(v => v.Parts).MustAsync(....));
}
}
SubmitCarRequest.cs 参数 1:无法从“CarPartsValidator”转换为“FluentValidation.Validators.IAsyncPropertyValidator
using FluentValidation.Validators;
public class CarPartsValidator : AsyncValidatorBase
{
private readonly ICarRepository _carRepository;
public CarPartsValidator(ICarRepository carRepository)
: base("Car parts validation error")
{
_carRepository = carRepository;
}
protected override async Task<bool> IsValidAsync(PropertyValidatorContext context, CancellationToken cancellation)
{
var parts = (List<Part>)context.PropertyValue;
// Perform your async validation logic here and return true if valid, false otherwise
}
}
public class SubmitCarValidator : AbstractValidator<SubmitCarRequest>
{
private readonly ICarRepository _carRepository;
public SubmitCarValidator(ICarRepository carRepository)
{
_carRepository = carRepository;
RuleFor(x => x.Parts)
.NotNull()
.SetValidator(new CarPartsValidator(_carRepository));
}
}