【发布时间】:2009-02-23 16:28:35
【问题描述】:
我有两个班级:
[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 - 2008 年 10 月/.NET 3.5 SP1/Vista。
如果我为新创建的 Country 对象调用 Validate 且区域列表为 null,则会收到 StackOverflow 异常。如果我删除 Country.Regions 属性的 [ObjectCollectionValidator(typeof(Region))],一切正常。我猜链接国家 - 地区 - 国家是失败的原因。但是,我不想删除 Regions 集合的验证;从区域中删除 [ObjectValidator] 对我来说都不是一个选项。我可以做些什么来维护所有这些验证属性,没有 StackOverflow 异常?
谢谢,
卢锡安
【问题讨论】:
-
这两个类的 SelfValidation 方法是什么?
标签: c# .net validation enterprise-library validation-application-bl