none
请教关于Enterprise Library中Validation Application Block实现原理 RRS feed

  • 问题

  •  

    我听过几堂 Enterprise Library 课,学到很多。最近看Validation Application Block,通过attribute对方法、字段进行验证,但不明白是如何实现的,进行跟踪也跟踪不到。
        我觉得写attribute类都比较简单,关键是在何时通过什么机制来触发验证?在Validation Application Block程序块中应该有这样的实现,但我一直没有看明白!
       目前写了一个是通过拦截上下文的方式来检查具体类的方法或属性的attribute,但有很大的缺陷,被检查的类必须继承ContextBoundObject!
       请各位高手解释一下Validation Application Block实现原理!谢谢了!
    2008年9月3日 7:00

答案

  • Code Snippet

    Customer myCustomer = new Customer( /* ... */ );
    Validator<Customer> customerValidator =  
         ValidationFactory.CreateValidator<Customer>();
    ValidationResults results = customerValidator.Validate(myCustomer);

     

     

    首先创建一个validator对象customerValidator,然后在这个对象上调用Validate方法。

    Validate方法的内部使用reflection得到myCustomer对象各个property的属性,然后调用这个属性的Validate方法去验证其值是否合法。

    2008年9月10日 5:51
  • 要看原理可以下载 Enterprise Library 源代码研究一下http://www.codeplex.com/entlib

     

    2008年9月14日 6:14
    版主

全部回复