IValidatableObject.Validate() 对比 Validator.TryValidateObject()

IValidatableObject.Validate() vs Validator.TryValidateObject()

我见过的大多数使用 IValidatableObject 的示例都使用验证器来验证对象,如下所示:

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));
}

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

Validator.TryValidateObject 将检查属性的 RequiredAttribute,附加到类型的任何 ValidationAttributeIValidatableObjectValidate 方法。

model.Validate 不会检查任何属性。