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

原文:黄聪: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 =1;

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(1988, 01, 01);

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

dt =new DateTime(2009, 5, 5);
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. 运行结果:

时间: 2014-03-05

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

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

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级) 企业库验证应用程序模块之配置文件模式:   1.       新建一个控制台应用程序,并创建一个Customer类,其代码如下所示: 代码 using System;using System.Collections.Generic;using System.Linq;using System.Text; using Microsoft.

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

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级) 企业库加密应用程序模块提供了2种方式让用户保护自己的数据: Hashingproviders:  离散加密法, 简单来说就是把你的信息保存到内存中后用一个离散值表示并返回给程序,这样在程序中只能看到离散值而不是明文,这样就起到简单的加密效果啦. Cryptographyproviders: 密钥加密法. 用对称加密方法对数据进行加密

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

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(一) : Caching Application Block (初级) 本篇文章具体官方解释请参照以下链接: http://msdn.microsoft.com/en-us/library/ff664753%28v=PandP.50%29.aspx MicrosoftEnterprise Library 5.0下载地址: http://www.microsoft.com/downloads/details.a

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

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块Cryptographyproviders中为对称加密配置Key文件的3种方式: create a new key  : 使用一串字符串作为Key,然后通过加密保存到一个Key文件中. use an existing DPAPI-protected key file  : 使用一个现有的Key文件进

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

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block   开发人员经常编写需要安全功能的应用程序.这些应用程序通常需要执行一系列不同的安全操作,而且它们还经常与不同的基础安全提供程序(如 Microsoft Active Directory 目录服务.授权管理器.Active Directory 应用程序模式 (ADAM) 和自定义数据库等)进行交互.     安全应用程序块通过收集开发人员必须执行的许

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

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级) Caching Application Block 的基本架构如下所示,图中很清楚的写出了Cache Manager可以使用3中方式对数据进行缓存: 1. Null backing store 存储策略   : 默认的存储策略,存储的数据只存储在内存的缓存中,并不持久保存, 它可用于所有支持的应用类型.适合于保存一些临时的数据,或者用于保存当

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

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block 企业库日志应用程序模块工作原理图:        从上图我们可以看清楚企业库日志应用程序模块的工作原理,其中LogFilter,Trace Source,Trace Listener,Log Formatter的信息都可以在Category配置文件中反映出来,通过配置文件,调用LogWriter类的Writer方法,就可以将包含日志信息的LogEntr

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

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block 到目前为止,我们使用的模块都是在同一个配置文件中,这显然是不灵活的,我们希望每个功能模块能独立的在一个配置文件中体现,这样不仅易于管理,易于扩展,也易于阅读和分类.企业库当然考虑到了这个问题并且提供了解决方案,本章就是讲解如何使用Configuration Application Block来将各个模块分割到独立的配置文件中的. 和以前一样

黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Access Application Block

原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Access Application Block 企业库数据库访问模块通过抽象工厂模式,允许用户通过简单的配置选择不同的数据库作为程序的数据源,大大解决了切换数据库时带来的麻烦.因为我本机只安装了SQL Server 2005,所以在此只做SQL的演示,需要深究的朋友可以访问以下网站: http://msdn.microsoft.com/en-us/library/ff664408%28v=P