У меня есть следующий код для проверки объекта:проверить еще одно правило с fluentvalidation
public class AffiliateValidator : AbstractValidator<Affiliate>
{
public AffiliateValidator()
{
RuleFor(x => x.IBAN).SetValidator(new ValidIBAN()).Unless(x => String.IsNullOrWhiteSpace(x.IBAN));
}
}
И ValidIBAN() Код:
public class ValidIBAN : PropertyValidator
{
public ValidIBAN()
:base("IBAN \"{PropertyValue}\" not valid.")
{
}
protected override bool IsValid(PropertyValidatorContext context)
{
var iban = context.PropertyValue as string;
IBAN.IBANResult result = IBAN.CheckIban(iban, false);
return result.Validation == (IBAN.ValidationResult.IsValid);
}
}
}
Таким образом, метод CheckIBAN класса IBAN делает грязную работу.
Теперь мне нужно применить следующее правило для другого свойства: Если DirectDebit (bool) истинно, то IBAN не может быть пустым, а также он должен быть действительным.
Я могу это сделать:
RuleFor(x => x.DirectDebit).Equal(false).When(a => string.IsNullOrEmpty(a.IBAN)).WithMessage("TheMessage.");
Но как я могу Вызывать другое правило, правило IBAN в этом случае для того, чтобы проверить, является или не является действительным?
Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –
@JohnSaunders: Извините. Я не уверен, что было опубликовано как название. Но будет иметь в виду в следующий раз. – Txaran
"C# fluentvalidation проверить другое правило" –