IValidatableObject.Validate()vs Validator.TryValidateObject()

时间:2015-01-14 16:20:49

标签: c# validation

我使用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));
}

在选择使用哪种方法验证对象之前,两种方法之间是否存在功能差异或应该考虑哪些因素?

1 个答案:

答案 0 :(得分:0)

Validator.TryValidateObject会检查属性的RequiredAttribute,附加到该类型的任何ValidationAttribute以及Validate的{​​{1}}方法。

IValidatableObject不会检查任何属性。