FluentValidation в ASP.NET сложные свойства

#c# #asp.net-core #fluentvalidation

#c# #asp.net-ядро #fluentvalidation

Вопрос:

У меня следующая ситуация. У меня есть класс, например

 public class Person 
{
   public SchoolYear FirstYear {get; set;}
   public SchoolYear SecondYear {get; set;}
}

public class SchoolYear
{
   public string YearStartDate {get; set;}
   public string YearEndDate {get; set;}
}
  

Я хочу убедиться, что начало второго учебного года наступает ЧЕРЕЗ ДЕНЬ ПОСЛЕ окончания первого учебного года, и я хочу сделать это с помощью библиотеки FluentValidation. Как мне это сделать?

Ответ №1:

Не могли бы вы, пожалуйста, проверить это.

    public class PersonValidator : AbstractValidator<Person>
    {
        public PersonValidator()
        {
            RuleFor(x => x.SecondYear).Must((p, s)=> {
                var firstYear = p.FirstYear;
                var secondYear = p.SecondYear;
                return Convert.ToDateTime(secondYear.YearStartDate) == Convert.ToDateTime(firstYear.YearEndDate).AddDays(1);
            })
              .WithMessage("second school year should be ONE DAY AFTER firstYear YearEndDate ");
        }
    }
  

Для получения более подробной информации о пользовательском валидаторе следуйте ему.