2011-04-14 5 views
0

コンストラクタでプライベートプロパティを設定するクラスがあります。.net 4でValidationAttributesを使用してプライベートプロパティを検証します。

次に、渡された値が正常かどうかを確認するために、基本クラスから次のコードを実行します。 ValidationContext context = new ValidationContext(this、null、null);

ValidationResults = new List();

if (!System.ComponentModel.DataAnnotations.Validator.TryValidateObject(this, context, ValidationResults, true)) 
{ 
    this.Success = false; 
    this.StatusCode = CommandStatusCode.ValidationFailed; 
    return false; 
} 
return true; 

問題はTryValidateObjectのみパブリックプロパティを検証し、あります。プライベートプロパティを有効にする方法はありますか?

答えて

0

コンストラクタの引数にコード契約を使用します。

+0

コード契約では何もしていませんが、有望そうです... ValidationAttributesを簡単に再利用することはできますか? – AyKarsi

+0

@AyKarsi:コード契約は条件付きでコンパイルされ、潜在的にコンパイラによって静的にチェックされる可能性があります。属性は、実行時に反映ベースのメカニズムで検証されます。スペックはありますか?そうであれば、単体テストやコード契約、あるいはミックスを書くことができます。 – GregC

関連する問題