La validación fluida admite la validación condicional, solo use la cláusula When para verificar el valor del campo secundario:
https://fluentvalidation.net/start#conditions
Especificar una condición con los métodos When / Unless The When y Unless se pueden usar para especificar condiciones que controlan cuándo debe ejecutarse la regla. Por ejemplo, esta regla en la propiedad CustomerDiscount solo se ejecutará cuando IsPreferredCustomer sea verdadera:
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.When(customer => customer.IsPreferredCustomer);
El método Unless es simplemente lo opuesto a When.
También puede utilizar la operación .SetValidator para definir un validador personalizado que opere en la condición NotEmpty.
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.SetValidator(New MyCustomerDiscountValidator);
Si necesita especificar la misma condición para varias reglas, puede llamar al método When de nivel superior en lugar de encadenar la llamada When al final de la regla:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
});
Esta vez, la condición se aplicará a ambas reglas. También puede encadenar una llamada a otra cosa que invocará reglas que no coincidan con la condición:
When(customer => customer.IsPreferred, () => {
RuleFor(customer => customer.CustomerDiscount).GreaterThan(0);
RuleFor(customer => customer.CreditCardNumber).NotNull();
}).Otherwise(() => {
RuleFor(customer => customer.CustomerDiscount).Equal(0);
});