首页 > 解决方案 > FluentValidation - 验证器包装器

问题描述

我有一个用于基本验证器的文件,例如GuidValidator, GreaterThanZeroValidator,LessThanOrEqualToZeroValidator等。我想创建一个名为的验证器,该验证器NullCheckValidator将接受另一个验证器作为参数,但在 FluentValidation 中执行特定于类型的空检查.When()

为了让 NullCheckValidators 可以将我的任何基本验证器传递给它们,以便在执行基本验证器之前检查它们是否为空,我需要做什么?基本上我想添加一个包装器,它将.When()验证语句附加到已经存在的基本验证器。

例如:

// Basic Validator
public class GreaterThanZeroValidator : AbstractValidator<int>
{
    public GreaterThanZeroValidator()
    {
        RuleFor(value => value)
            .GreaterThan(0)
            .WithMessage("Must be greater than 0");
    }
}

// Pseudo-code for NullCheckValidator
public class NullCheckValidator : AbstractValidator<int?>
{
    public NullCheckValidator(AbstractValidator<int> validator) // validator would be something like GreaterThanZeroValidator
    {
        RuleFor(value => value)
            .When(value => value.HasValue)
            .SomewayToCombineValidators(validator)
    }
}

标签: c#validationfluentvalidation

解决方案


推荐阅读