私は2つのクラスを持っています:
[HasSelfValidation]
class Country : DomainObject
{
[NotNullValidator]
[StringLengthValidator(2, 10)]
public string Name { get; set; }
[ObjectCollectionValidator(typeof(Region))]
public List<Region> Regions { get; set; }
}
と
[HasSelfValidation]
class Region : DomainObject
{
[NotNullValidator]
[ObjectValidator]
public Country Country { get; set; }
[NotNullValidator]
[StringLengthValidator(2, 20)]
public string Name { get; set; }
}
DomainObject にはメソッドがあります。
public virtual ValidationResults Validate()
{
Validator validator =
ValidationFactory.CreateValidator(this.GetType());
ValidationResults results = new ValidationResults();
validator.Validate(this, results);
return results;
}
Microsoft Enterprise Library 4.1 - October 2008/.NET 3.5 SP1/Vista を使用しています。
地域のリストとして null を使用して新しく作成された Country オブジェクトを呼び出すValidate
と、StackOverflow 例外が発生します。Country.Regions プロパティの [ObjectCollectionValidator(typeof(Region))] を削除すると、すべて正常に動作します。国 - 地域 - 国というリンクが失敗の原因だと思います。ただし、Regions コレクションの検証を削除したくありません。領域から [ObjectValidator] を削除することも、私にとってはオプションではありません。StackOverflow 例外なしで、これらすべての検証属性を維持するためにできることはありますか?
ありがとう、
ルシアン