Как использовать FluentValidation в приложении c#
Я создаю приложение, которое имеет следующие слои
Контекст Структуры Данных - Сущностей
Организациям - базы объектов поко
Сервис - вызывается из веб-API, чтобы загрузить/сохранить лицо
WebApi -
Теперь я считаю, что мне следует поместить свою бизнес-логику в уровень сервиса, так как у меня есть сервис для сущностей, например, у меня есть семейный объект и Семейный сервис.
Чтобы создать объект проверки с помощью FluentValidation, кажется, что вы должны наследовать от AbstractValidator, поскольку Мои сервисы уже наследуют от объекта, это невозможно (или это так)?
Я полагаю, что мой единственный вариант-создать FamilyValidator на уровне сервиса и вызвать этот валидатор из сервиса?
Является ли fluentValidation моим лучшим вариантом, или я путаю вещи здесь?
1 ответ:
Если у вас есть объект под названием Customer, то вот как вы пишете валидатор для него:
public class CustomerValidator: AbstractValidator<Customer> { public CustomerValidator() { RuleFor(customer => customer.Surname).NotEmpty(); RuleFor(customer => customer.Forename).NotEmpty().WithMessage("Please specify a first name"); RuleFor(customer => customer.Discount).NotEqual(0).When(customer => customer.HasDiscount); RuleFor(customer => customer.Address).Length(20, 250); RuleFor(customer => customer.Postcode).Must(BeAValidPostcode).WithMessage("Please specify a valid postcode"); } private bool BeAValidPostcode(string postcode) { // custom postcode validating logic goes here } } Customer customer = new Customer(); CustomerValidator validator = new CustomerValidator(); ValidationResult results = validator.Validate(customer); bool validationSucceeded = results.IsValid; IList<ValidationFailure> failures = results.Errors;
Comments