使用企业库验证应用程序块验证出生日期的年龄

时间:2013-10-23 16:59:39

标签: validation enterprise-library validation-application-bl

我有以下情况: 具有BithDay属性的域模型。 我希望能够验证年龄(将根据生日计算)低于150岁。 我可以使用内置的验证器来做到这一点,还是我必须自己构建? someoane能为我提供一个DomainValidator的例子吗?

2 个答案:

答案 0 :(得分:1)

您可以使用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岁。”

答案 1 :(得分:1)

您可以尝试这样的事情:

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; }
    }
}