Подтвердите возраст по дате рождения с помощью блока приложения проверки библиотеки Enterprise

У меня следующая ситуация: Доменная модель, которая имеет свойство BithDay. Я хочу иметь возможность проверить, что возраст (который будет рассчитываться в соответствии с днем ​​рождения) меньше 150 лет. Могу ли я сделать это, используя встроенные валидаторы, или я должен создать свой собственный? Может ли кто-нибудь предоставить мне пример DomainValidator?

2 ответа

Решение

Вы можете использовать RelativeDateTimeValidator подтвердить возраст на основе даты рождения. Например:

public class Person
{
    [RelativeDateTimeValidator(-150, DateTimeUnit.Year, RangeBoundaryType.Inclusive, 
        0, DateTimeUnit.Year, RangeBoundaryType.Ignore,
        MessageTemplate="Person must be less than 150 years old.")]
    public DateTime BirthDate
    {
        get;
        set;
    }
}

// 150 Year old person
Person p = new Person() { BirthDate = DateTime.Now.AddYears(-150) };

var validator = ValidationFactory.CreateValidator<Person>();
ValidationResults vrs = validator.Validate(p);

foreach (ValidationResult vr in vrs)
{
    Console.WriteLine(vr.Message);
}

Будет напечатано: "Человек должен быть не старше 150 лет".

Вы можете попробовать что-то вроде этого:

public class Person
{
    public DateTime BirthDate { get; set; }

    [RangeValidator(0, RangeBoundaryType.Inclusive, 150, RangeBoundaryType.Exclusive,
        MessageTemplate="Person must be less than 150 years old.")]
    public int Age
    {
        get { return (DateTime.Now - this.BirthDate).Days / 365; }
    }
}
Другие вопросы по тегам