程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Enterprise Library 3.0體驗(2):使用Validation Application Block

Enterprise Library 3.0體驗(2):使用Validation Application Block

編輯:關於.NET

一.概述

在Enterprise Library 3.0 December 2006 CTP版中,加入了一個新的成員Validation Application Block,用來實現對業務對象的驗證。它支持兩種方式的驗證,通過特性Attribute和通過配置文件,但是在最新版本中並沒有提供配置的設計時支持,我們只能通過手動去修改配置文件來實現,所以本文主要看一下通過Attribute來實現驗證。

二.通過ValidationFactory創建驗證器

Validation Application Block沿用了其他應用程序塊的一貫做法,使用相同的操作模式,為我們提供了一個ValidationFactory的工廠,用來創建驗證器。首先我們編寫一個簡單的業務對象類:

/// <summary>
/// http://terrylee.cnblogs.com
/// </summary>
public class User
{
  private String _name;
  private int _age;
  public String Name
  {
    get { return _name; }
    set { _name = value; }
  }
  public int Age
  {
    get { return _age; }
    set { _age = value; }
  }
}

這只是一個普通的業務實體類,現在我們要驗證它的姓名屬性不能為空,且長度在1到50之間,年齡字段在0到200之間,加上如下Attribute:

/**//// <summary>
/// http://terrylee.cnblogs.com
/// </summary>
public class User
{
  private String _name;
  private int _age;
  [NotNullValidator]
  [StringLengthValidator(1,50)]
  public String Name
  {
    get { return _name; }
    set { _name = value; }
  }
  [Int32RangeValidator(0,200)]
  public int Age
  {
    get { return _age; }
    set { _age = value; }
  }
}

在Validation Application Block中,現在已經提供的驗證器有:

l AndCompositeValidator
l Int32RangeValidator
l NotNullValidator
l NullValidator
l OrCompositeValidator
l RangeValidator
l StringLengthValidator
l ValidNumberValidator
l ValueAccessValidator

現在就可以進行驗證了,如下面的代碼片斷所示:

/**//// <summary>
/// http://terrylee.cnblogs.com
/// </summary>
class Program
{
  static void Main(string[] args)
  {
    User user = new User();
    user.Name = "TerryLee";
    user.Age = 60;
    IValidator<User> userValidators = ValidationFactory.CreateValidator<User>();
    ValidationResults results = userValidators.Validate(user);
    Console.WriteLine(results.IsValid.ToString());
    Console.Read();
  }
}

首先使用ValidationFactory創建Validator,再調用Validator的Validate方法進行驗證,返回的結果ValidationResults是一個ValidationResult的集合,包含了錯誤信息,我們可以通過Key和Message屬性來顯示錯誤信息,如下所示:

/**//// <summary>
/// http://terrylee.cnblogs.com
/// </summary>
class Program
{
  static void Main(string[] args)
  {
    User user = new User();
    user.Name = "TerryLee";
    user.Age = 210;
    IValidator<User> userValidators = ValidationFactory.CreateValidator<User>();
    ValidationResults results = userValidators.Validate(user);
    foreach (ValidationResult result in results)
    {
      Console.WriteLine(String.Format("Key: {0},Message: {1}", result.Key.ToString(), result.Message));
    }
    Console.Read();
  }
}

三.通過外觀類實現驗證

用過Logging Application Block的朋友都知道,在Logging Application Block中為我們提供了一個Logger的外觀類,簡化了記錄日志。同樣在Validation Application Block中,為我們提供了一個Validation的外觀類,不需要再使用ValidationFactory。如下面的代碼片斷所示:

/**//// <summary>
/// http://terrylee.cnblogs.com
/// </summary>
class Program
{
  static void Main(string[] args)
  {
    User user = new User();
    user.Name = "TerryLee";
    user.Age = 210;
    ValidationResults results = Validation.Validate<User>(user);
    foreach (ValidationResult result in results)
    {
      Console.WriteLine(String.Format("Key: {0},Message: {1}", result.Key.ToString(), result.Message));
    }
    Console.Read();
  }
}

可以看到,Validation Application Block沿用了Enterprise Library的一貫操作模式,使用起來也非常的簡單。如果提供的驗證器不能滿足實際開發的需要,也可以很輕松的創建自定義的驗證其。關於Validation Application Block就簡單得介紹到這兒。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved