原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级)

企业库提供了一个很强大的验证应用程序模块,特点是:

  • 可以通过配置为你的程序中特定的类来定义规则集.
  • 是为你的类的公有属性,即对外开放的属性进行验证的.

使用企业库验证应用程序模块的优势:

  • 有助于保持一致的验证方法。
  • 包括大多数标准验证,包括.NET数据类型校验.
  • 它让您可以将多个规则集具有相同的类和该类的成员.
  • 它可以让你申请一个或多个规则集时,您验证的对象.

企业库验证应用程序模块提供了下列几种验证方法:

  • And CompositeValidator
  • ContainsCharacters Validator
  • Date Time RangeValidator
  • Domain Validator
  • Enum ConversionValidator
  • Not Null Validator
  • Object CollectionValidator
  • Object Validator
  • Or CompositeValidator
  • PropertyComparison Validator
  • Range Validator
  • Regular ExpressionValidator
  • Relative Date TimeValidator
  • String LengthValidator
  • Type ConversionValidator
  • Single MemberValidators

企业库验证应用程序模块有2种使用模式:

  1. 代码模式.
  2. 配置文件模式.

本文讲的是代码模式,配置文件模式在高级篇再介绍

下面介绍如何使用Microsoft Enterprise Library 5.0中的验证应用程序模块的代码模式.

  1. 要使用缓存应用程序模块, 需要导入相应的Dll文件,在此我们要导入的是Microsoft.Practices.EnterpriseLibrary. Validation.dll ,System.ComponentModel.DataAnnotations.dll ,并添加需要的引用:

添加引用:

usingMicrosoft.Practices.EnterpriseLibrary.Validation.Validators;usingMicrosoft.Practices.EnterpriseLibrary.Validation;usingSystem.Collections.Generic;

  2. 测试:

代码

using System;

using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using System.Collections.Generic;

namespace test
{
class Program
{
staticint index =;

staticvoid Main(string[] args)
{
//验证Customer类
Validator<Customer> customerValidator = ValidationFactory.CreateValidator<Customer>();

//设置Customer的CustomerName字段为null
Customer myCustomer =new Customer(null);

ValidationResults vr = customerValidator.Validate(myCustomer);
Scan(vr);

//设置Customer的CustomerName
myCustomer.CustomerName ="HuangCong";

vr = customerValidator.Validate(myCustomer);
Scan(vr);

//创建一个日期
DateTime dt =new DateTime(, , );

//创建一个日期验证器
Validator<DateTime> v1 =new DateTimeRangeValidator(DateTime.Parse("2009-01-01"), DateTime.Parse("2010-01-01"));
vr = v1.Validate(dt);
Scan(vr);

dt =new DateTime(, , );
vr = v1.Validate(dt);
Scan(vr);

/*
其他的验证类还有如下这些,大家可以自己实验:

And Composite Validator
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

参考网站:http://msdn.microsoft.com/en-us/library/ff664694%28v=PandP.50%29.aspx
*/
}

publicclass Customer
{
//Not Null Validator 验证器,验证该属性不能为空值
[NotNullValidator]
publicstring CustomerName;

public Customer(string customerName)
{
this.CustomerName = customerName;
}
}

privatestaticvoid Scan(ValidationResults vr)
{
Console.WriteLine("测试{0}:", index++);
if (!vr.IsValid)
{
Console.WriteLine("出错");
}
else
{
Console.WriteLine("正确");
}
Console.WriteLine("---------------------------------------");
}
}
}

  3. 运行结果:

黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级)的更多相关文章

  1. 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级) 企业库验证应用程序模块之配置文件模式: ...

  2. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级) 企业库加密应用程序模块提供了2种方 ...

  3. 黄聪:Microsoft Enterprise Library 5.0 系列教程(一) : Caching Application Block (初级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(一) : Caching Application Block (初级) 本篇文章具体官方解释请参照以下链接: h ...

  4. 黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block 开发人员经常编写需要安全功能的应用程序.这些应用程序 ...

  5. 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block 企业库日志应用程序模块工作原理图:   从上图我们可以 ...

  6. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块 ...

  7. 黄聪:Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级) Caching Application Bl ...

  8. 黄聪:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block 到目前为止,我们使用的模块都是在同一个配置 ...

  9. Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block

    Download dll: http://www.microsoft.com/en-us/download/confirmation.aspx?id=15104 http://www.cnblogs. ...

随机推荐

  1. Delphi XE7 用indy开发微信公众平台所有功能(10篇博客)

    http://www.cnblogs.com/devinlee/p/4282498.html http://www.cnblogs.com/devinlee/p/4565933.html

  2. IIS部署asp.net报404错误

    1).所建网站->(右键)权限->"ASP.NET计算机帐户"是否已添加.     2).所建网站->(右键)属性->ASP.NET选项卡->版本是否 ...

  3. poj 3623 Best Cow Line, Gold

    题目不算难,但是不认真想的话很容易wa,我就是wa了多次才意识到自己想法存在的缺陷. 相同的时候往后找知道出现不相同时,只能判断出当前字符的优先顺序. 这个题目如果朴素的按照这种方法做的话复杂度其实是 ...

  4. Github Atom

    码代码新神器-Github Atom   周末闲着没事,逛论坛发现了一个新的编辑器,由github发布的Atom编辑器.瞬间被吸引了,所以就去尝试着折腾了一下,后来发现这个编辑器确实很不错,他的特点就 ...

  5. 14.4.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering

    14.4.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering 当INSERT,UPDATE,和删除操作在表上操作, 索引列的 ...

  6. Spark&amp;Spark性能调优实战

    Spark特别适用于多次操作特定的数据,分mem-only和mem & disk.当中mem-only:效率高,但占用大量的内存,成本非常高;mem & disk:内存用完后,会自己主 ...

  7. ThinkPHP中实例化对象M()和D()的区别,select和find的区别

    原文:ThinkPHP中实例化对象M()和D()的区别,select和find的区别 1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在 ...

  8. java多线程12设计模式

    1.Single Threaded Execution Pattern(单线程运行模式) 2.Immutable Pattern(一成不变的模式) 3.Guarded Suspension Patte ...

  9. ZooKeeper安装与运行

    ZooKeeper安装与运行 首先从官网下载ZooKeeper压缩包,然后解压下载得到的ZooKeeper压缩包,发现有“bin,conf,lib”等目录.“bin目录”中存放有运行脚本:“conf目 ...

  10. [Cocos2d-x]节点之间的相互通讯

    在做.NET开发时,对象之间的相互通讯一般使用事件(event)实现,事件概念是.NET对Delegate的封装. 在Cocos2d-x开发过程中,对象之间的通讯刚开始时不知道如何实现,于是想到c++ ...