Validation Application Block
EntLib3から追加されたValidation Application Block(以下VAB)について。
- 用途
VABは値の検証を行うためのApplication Blockです。オブジェクトのプロパティ、メンバ、メソッドの実行結果に対して検証を行います。
検証の対象となるオブジェクトと、検証を行う側に分けて説明します。
検証の設定方法
検証の設定方法として、下記の方法が用意されています。
- 属性による設定
- 構成ファイルによる設定
- 検証メソッドによる設定
属性による設定
検証対象のクラスに含まれるフィールド、プロパティ、メソッドに対してMicrosoft.Practices.EnterpriseLibrary.Validation.Validators.ValidatorAttributeから派生した検証属性を付加します。検証属性はひとつの項目に複数付加することも可能です。
public class TestData { ... [StringLengthValidator(10)] public string Data1 { get { return data1; } set { data1 = value; } } [StringLengthValidator(5)] [RegexValidator("^a")] public string Data2 { get { return data2; } set { data2 = value; } } ... }
上記の例では、Data1が10文字以下、Data2がaで始まる5文字以下という検証を行うことになります。
構成ファイルによる設定
属性で設定するかわりに、構成ファイルを使用して検証を設定することも可能です。
上記属性と同様の設定を行った際のイメージを挙げます。
対象クラス、ルールセット名、対象メンバ、検証の順にノードを設定します。
検証メソッドによる設定
もっと複雑な検証や、複数メンバ間の検証に対しては、検証メソッドを指定することも可能です。
[HasSelfValidation] public class TestData { ... [SelfValidation] public void ValidateThis(ValidationResults results) { if (string.Compare(Data1, Data2) < 0) results.AddResult(new ValidationResult("Data1がData2より小さい", null, null, null, null)); } ... }
HasSelfValidation属性をクラスに、SelfValidation属性を検証メソッドに付加することにより、検証メソッドを用いた検証が行われます。検証に失敗した際に、ValidationResultsに失敗の内容を表すValidationResultオブジェクトを追加します。
上記の例では、Data1がData2より小さいときに検証が失敗します。
検証方法
検証は、簡単なコードを記述することによって行うことができます。
TestData data; ... // dataに値を設定する ValidationResults r = Validation.Validate<TestData>(data); if (r.IsValid) { ...
上記例で出てくるTestDataクラスのオブジェクトを検証しています。