使用企业库验证块进行复杂对象验证

All*_*ngu 1 .net enterprise-library

我正在使用企业库验证.

我有类似下面的课程

 public class Customer
    {

        public int Id { get; set; }
        [NotNullValidator(MessageTemplate = "{1} is null")]
        public string FirstName { get; set; }
        [NotNullValidator(MessageTemplate = "{1} is null")]
        public string Surname { get; set; }

    }

  public class Order
    {

        public int Id { get; set; }
        [NotNullValidator(MessageTemplate = "{1} is null")]
        public Customer Customer { get; set; }

    }
Run Code Online (Sandbox Code Playgroud)

当我使用订单对象和姓氏和名字是空的验证应该启动,但它没有.

我究竟做错了什么?

注意:我在WCF中使用它

Ste*_*ven 5

您应该使用该[ObjectValidator]属性修饰您的Customer 属性.这将确保验证应用程序将验证对象图:

public class Order
{
    [ObjectValidator]
    public Customer Customer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

提示:您应该阅读验证应用程序块4.1动手练习附带的ValidationHOL.pdf(动手实验)文档(PDF是下载的一部分).它将为您提供有关VAB的大量信息,这些信息很难在您的信息中找到.