ASP.NET MVC 2 の検証規則として「コード コントラクト」属性を使用するための利用可能なオプションを知りたいです。
2 に答える
これは、Runtime Checker をカスタマイズすることで実行できます。
Code Contracts を調整して検証フレームワークとして使用することは可能ですが、私はそれをお勧めしません。ランタイム チェッカーを微調整するのはより高度な機能の 1 つであり、さらに重要なことは、Code Contracts の目的ではありません。
Code Contracts は基本的に、Design by Contractをプロジェクトに統合する手段です。その目的の 1 つはクラス デザインに対してコードを検証することですが、検証フレームワークではありません。
私の意見では、別の実際の検証フレームワークの隣で使用する必要があります。
Code Contracts の使用を開始する前に、こちらのユーザー マニュアルをお読みになることをお勧めします。ランタイム チェッカーのカスタマイズ方法など、すべての情報が含まれています。
はい、「コード コントラクト」の主な目的は、クラス デザインに対してコードを検証することですが、オブジェクトの有効な状態についても説明します。
私が考えることができる検証シナリオは、次の 3 つのタイプだけです。
- 入力検証 (UI 検証)
- ドメイン検証 ( DbC )
- 出力検証 (永続性検証、例: NHibernate Validator )
バリデーションは、対象物が有効な状態かどうかという論理的な問題だと考えています。
DbC には 3 つの部分があります。
- 検証規則
- 静的チェッカー
- 実行時チェッカー
最初の部分 (規則) は、検証の 3 つのシナリオすべてに共通です。「Code Contracts」を使用してプロパティに「Not Null」のタグを付けて設計を検証する場合、MVC (UI Validation) の「System.ComponentModel.DataAnnotations」を使用して「Not Empty」のタグを付けるのは見苦しくありませんか?
要約すると、有効な状態の定義はコアであり、検証フレームワークと「コード コントラクト」の共有部分がそれを提供し、ドメイン設計 (I/O ではない) の「静的チェッカー」である 1 つの追加機能を提供します。