Я пытался выяснить, как создать правило FluentValidation, которое проверяет, является ли экземпляр объекта, который он проверяет, не является нулевым, до проверки его свойств.Правило FluentValidation для нулевого объекта
Я предпочел бы инкапсулировать эту нулевую проверку в валидаторе, а не делать это в вызывающем коде.
См пример кода ниже с комментариями, где требуется необходимая логика:
namespace MyNamespace
{
using FluentValidation;
public class Customer
{
public string Surname { get; set; }
}
public class CustomerValidator: AbstractValidator<Customer>
{
public CustomerValidator()
{
// Rule to check the customer instance is not null.
// Don't continue validating.
RuleFor(c => c.Surname).NotEmpty();
}
}
public class MyClass
{
public void DoCustomerWork(int id)
{
var customer = GetCustomer(id);
var validator = new CustomerValidator();
var results = validator.Validate(customer);
var validationSucceeded = results.IsValid;
}
public Customer GetCustomer(int id)
{
return null;
}
}
}
Так что мой вопрос Как проверить в CustomerValidator() конструктор, что текущий экземпляр клиента не является нулевым и отменить дальнейшую обработку правила, если она равна нулю?
Заранее спасибо.
Переопределить метод 'Validate'? – Matthew
У вас есть метод расширения, который проверяет, имеет ли он значение null перед вызовом базового метода Validate()? – Bern
Нет, см. Мой ответ ниже. Вы бы назвали его так же, как и любой другой валидатор. – Matthew