微软企业库5.0学习笔记(四十三)数据验证模块

本文介绍企业库验证模块的使用方法,包括验证规则定义、验证执行等。该模块支持多种.NET平台,如ASP.NET、WCF等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  概况

  任何接受用户或者是其他系统输入的应用,一定要确保信息是合法的,符合特定的规则。例如:在处理一个订单的时候,需要检查客户的电话号码一定要是数字。另外,如果验证失败,需要返回表明错误的信息。

  企业库的验证模块允许开发者实现结构化的,易维护的验证方案。另外,验证模块允许在下面的技术中使用:

  •   ASP.NET
  •   Windows Communication Foundation(WCF)
  •   Windwos Presentation Foundation(WPF)
  •   Windows Forms

  企业库的验证模块是用来验证对象的,不是用来验证UI的控件的。可以验证任何地方的对象。

  你可以用下面的方式定义验证规则,并且实施验证:

  •   在配置文件中为指定的类定义规则集合。
  •   通过在对象的成员上添加attribute。
  •   在代码中添加自验证。
  •   用代码创建validators实例,然后执行验证命令。

  实例代码

 

ExpandedBlockStart.gif代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
public class Customer
{
  [StringLengthValidator(
020)]
  
public string CustomerName;
    
  
public Customer(string customerName)
  {
    
this.CustomerName = customerName;
  }
}

public class MyExample
{
  
private ValidatorFactory factory;

  
public MyExample(ValidatorFactory valFactory)
  {
    factory 
= valFactory;
  }

  
public void MyMethod()
  {
    Customer myCustomer 
= new Customer("A name that is too long");
    Validator
<Customer> customerValidator 
                        
= factory.CreateValidator<Customer>();

    
// Validate the instance to obtain a collection of validation errors.
    ValidationResults r = customerValidator.Validate(myCustomer);
    
if (!r.IsValid)
    {
      
throw new InvalidOperationException("Validation error found.");
    }
  }
}
  

 

  使用验证模块的好处

  •   维护一致的验证体验
  •   可以验证大部分的.NET标准类型。
  •   允许你通过配置、attribute、代码创建验证规则。
  •   允许同一个类关联多个验证规则集合。
  •   在验证对象的时候,可以应用一个或者多个验证规则集合。
  •   可以和ASP.NET,WCF,WPF,WINDOWS FORMS整合。

  添加程序集引用

  添加Microsoft.Practices.EnterpriseLibrary.Validation.dll

  添加

  

Microsoft.Practices.EnterpriseLibrary.Common.dll Microsoft.Practices.ServiceLocation.dll Microsoft.Practices.Unity.dll Microsoft.Practices.Unity.Interception.dll

 

  

  • Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WinForms.dll
  • Microsoft.Practices.EnterpriseLibrary.Validation.Integration.AspNet.dll
  • Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WPF.dll
  • Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF.dll
    <!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->using Microsoft.Practices.EnterpriseLibrary.Validation;
    using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

     

      

  

  验证模块的使用

  验证模块包括一个名为validators的类,从validator类继承。还有一个泛型版本validator<T>。

  每一个验证都和一个特定的类型关联。例如:StringLengthValidator类用来检查string是否在预定的长度范围。

  有四种方法可以关联验证类和特定的类型:

  •   配置文件中配置
  •   使用attribute
  •   同时使用配置文件和attribute
  •   使用自验证,在需要验证的对象中包含验证逻辑

  验证类

  •   And Composite Validator

Class Name: AndCompositeValidator

Attribute Name: ValidatorCompositionAttribute

Configuration tool name: And Composite Validator

  

  •   Contains Characters Validator

  

Class Name: ContainsCharactersValidator

Attribute Name: ContainsCharactersValidatorAttribute

Configuration tool name: Contains Characters Validator

  •    Date Time Range Validator
  •   Domain Validator
  •   Enum Conversion Validator
  •   Not Null Validator
  •   Object Collection Validator
  •   Object Validator
  •   Or Composite Validator
  •   Property Comparison Validator
  •   Range Validator
  •   Regular Expression Validator
  •   Relative Date Time Validator
  •   String Length Validator
  •   Type Conversion Validator
  •   Single Member Validators

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值