带有 SetAsyncValidator 的 FluentValidator

问题描述 投票:0回答:1

公共类 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

c# .net fluentvalidation
1个回答
0
投票
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));
    }
}
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.