Плавная проверка поддерживает условную проверку, просто используйте предложение When, чтобы проверить значение вторичного поля:
https://fluentvalidation.net/start#conditions
Определение условия с помощью методов When / Unless . Методы When и Unless могут использоваться для указания условий, которые определяют, когда должно выполняться правило. Например, это правило свойства CustomerDiscount будет выполняться, только если IsPreferredCustomer имеет значение true:
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.When(customer => customer.IsPreferredCustomer);
Метод Unless - это просто противоположность метода When.
Вы также можете использовать операцию .SetValidator для определения настраиваемого валидатора, который работает с условием NotEmpty.
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.SetValidator(New MyCustomerDiscountValidator);
Если вам нужно указать одно и то же условие для нескольких правил, вы можете вызвать метод верхнего уровня When вместо связывания вызова When в конце правила:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
});
На этот раз условие будет применяться к обоим правилам. Вы также можете связать вызов с Иначе, который вызовет правила, не соответствующие условию:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
}).Otherwise(() => {
RuleFor(customer => customer.CustomerDiscount).Equal(0);
});