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种使用模式:
- 代码模式.
- 配置文件模式.
本文讲的是代码模式,配置文件模式在高级篇再介绍
下面介绍如何使用Microsoft Enterprise Library 5.0中的验证应用程序模块的代码模式.
- 要使用缓存应用程序模块, 需要导入相应的Dll文件,在此我们要导入的是Microsoft.Practices.EnterpriseLibrary. Validation.dll ,System.ComponentModel.DataAnnotations.dll ,并添加需要的引用:
添加引用:
usingMicrosoft.Practices.EnterpriseLibrary.Validation.Validators;
usingMicrosoft.Practices.EnterpriseLibrary.Validation;
usingSystem.Collections.Generic;
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("---------------------------------------");
}
}
}
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. 运行结果:
本文来自博客园,作者:jevan,转载请注明原文链接:https://www.cnblogs.com/DoNetCShap/archive/2011/12/21/2295547.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端