我在属性上使用了很多EF4 POCO实体和一些默认的DataAnnotations ValidationAttribute(必需,StringLength,RegularExpression等)(这是我们使用的一些T4脚本生成的),我想自定义验证实体通过IValidatableObject接口。
我的问题是: 我可以在IValidatable.Validate()方法的实现中调用一些基本方法来验证所谓的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;
}
欢迎任何建议!提前谢谢。