我使用IValidatableObject的大多数示例都使用Validator来验证这样的对象:
IEnumerable<ValidationResult> ValidateMyModel(IValidatableObject model){
var validationResults = new List<ValidationResult>();
Validator.TryValidateObject(model, new ValidationContext(model), validationResults);
return validationResults;
}
但是我也看到过像这样使用的IValidatableObject.Validate()方法:
IEnumerable<ValidationResult> ValidateMyModel(IValidatableObject model){
return model.Validate(new ValidationContext(model));
}
在选择使用哪种方法验证对象之前,两种方法之间是否存在功能差异或应该考虑哪些因素?
答案 0 :(得分:0)
Validator.TryValidateObject
会检查属性的RequiredAttribute
,附加到该类型的任何ValidationAttribute
以及Validate
的{{1}}方法。
IValidatableObject
不会检查任何属性。