私はいくつかのデフォルトのDataAnnotations ValidationAttribute(Required、StringLength、RegularExpressionなど)を持つEF4 POCOエンティティを使用しています(これは、使用するT4スクリプトによって生成されます)。 IValidatableObjectインタフェースIValidatableObjectインターフェイスで自動的にDataAnnotations検証を自動的に行うことはできますか?
私の質問は: 私はIValidatable.Validate()メソッド、assositiated ValidationAttribute上のすべてのプロパティを検証するためのいくつかの基本メソッドの実装では、呼び出すことができますか?各プロパティを検証するために同じコードを書くのに非常に時間がかかるでしょう。
例の検証:
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
ICollection<ValidationResult> validationResults = new List<ValidationResult>();
if (string.IsNullOrEmpty(DatabaseName))
{
validationResults.Add(new ValidationResult(Messages.Error_OrderedComponentDatabase_DatabaseName_Required, new string[] { "DatabaseName" }));
}
else if (DatabaseName.Length > 50)
{
validationResults.Add(new ValidationResult(Messages.Error_OrderedComponentDatabase_DatabaseName_TooLong, new string[] { "DatabaseName" }));
}
return validationResults;
}
好ましい実施(擬似コード):
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
ICollection<ValidationResult> validationResults = someInstance.ValidateOnDataAnnotations(this);
// do some extra custom validation...
return validationResults;
}
任意の提案は大歓迎です!前もって感謝します。
これらのサンプルバリデーションはすべて組み込まれています。なぜそれを繰り返すのですか? – Eranga
ウィザードコントロールで部分的な検証が必要です。 – J2011