#c# #validation #fluentvalidation
Вопрос:
У меня есть файл для основных валидаторов, таких как GuidValidator
, GreaterThanZeroValidator
LessThanOrEqualToZeroValidator
, и т. Д. Я хотел бы создать вызываемый валидатор NullCheckValidator
, который принимал бы другой валидатор в качестве параметра, но выполнял бы проверку на нуль определенного типа во время проверки .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)
}
}
Комментарии:
1.
RuleFor(value => value.Value).SetInheritanceValidator(v => v.Add(validator));
… Кстати, вы не можете пройти мимо(int?)null
, чтобыValidator.Validate(...)