Validation Application Block是EL3.0中新加入的应用程序块,它可以借助Attribute或配置文件来轻松实现数据的有效性验证。下面通过一个简单的小例子演示如何通过Attribute进行数据验证。
1. 新建一个控制台工程: ValidationDemo1
2. 创建一个实体类:Student,并为其添加学号、姓名和年龄三个属性。
3. 添加引用: Microsoft.Practices.EnterpriseLibrary.Validation
4. 在Student类中添加命名空间: Microsoft.Practices.EnterpriseLibrary.Validation
5. 为相应的属性添加验证Attribute
这里我们假设定义的数据有效格式为:
学号:非空,长度为9位。
姓名:非空,长度为1~10之间。
年龄:允许为空,但是大小要在18岁~24岁之间。
添加Attribute后代码变为:
2 {
3 private string _stdNo;
4
5 [NotNullValidator]
6 [StringLengthValidator(9,9)]
7 public string StdNo
8 {
9 get { return _stdNo; }
10 set { _stdNo = value; }
11 }
12 private string _name;
13
14 [NotNullValidator]
15 [StringLengthValidator(1,10)]
16 public string Name
17 {
18 get { return _name; }
19 set { _name = value; }
20 }
21 private int _age;
22
23 [Int32RangeValidator(18,24)]
24 public int Age
25 {
26 get { return _age; }
27 set { _age = value; }
28 }
29 }
6. 创建一个实例进行测试,并在这个类中引用命名空间:Microsoft.Practices.EnterpriseLibrary.Validation
2 {
3 Student student = new Student();
4 student.StdNo = "12345678";
5 student.Name = "xiaochen";
6 student.Age = 20;
7
8 ValidationResults results = Validation.Validate(student);
9 if (!results.IsValid)
10 {
11 foreach (ValidationResult result in results)
12 {
13 string errorMsg = "Key: {0}, Message: {1}";
14 Console.WriteLine(string.Format(errorMsg, result.Key.ToString(), result.Message.ToString()));
15 }
16
17 Console.ReadLine();
18 }
19 }
7. 察看输出结果:
将不符合验证的字段信息打印了出来,并显示不符合的地方。
将数据修改为符合数据有效性的数据,再次执行程序,则不现实任何错误信息。
总结:
本文介绍了一种使用Validation Application Block的方法,可以通过对象浏览器察看Microsoft.Practices.EnterpriseLibrary.Validation.dll并打开Microsoft.Practices.EnterpriseLibrary.Validation命名空间,形如ValidatorAttributes的方法都是可以当作Attribute的来使用的,同时也可以定义自己的Attribute元素。
此外,如果你仅仅是通过Attribute来实现数据的验证,而并不使用配置文件验证。这种情况下,更加建议使用Validatation.ValidateFromAttributes()方法,这样可以避免实例化IConfigurationSource接口,从而在一定程度上节省了系统的资源。