Подтвердите возраст по дате рождения с помощью блока приложения проверки библиотеки 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; }
}
}