自定义验证未执行

本文关键字:执行 验证 自定义 | 更新日期: 2023-09-27 18:06:15

我在WPF应用程序中有一个视图模型类,它有一些非常复杂的验证。我已经实现了IValidatableObject接口来提供自定义验证逻辑。问题是我的IEnumerable<ValidationResult> Validate(ValidationContext validationContext)从来没有被调用!

下面是尝试验证的代码:Validator.TryValidateObject(RMA, new ValidationContext(RMA, null, null), result);

任何想法为什么Validator对象不调用我的自定义验证代码?

自定义验证未执行

问题是,我在自定义类中的一个字段上有[Required],并且Validator将不会执行自定义验证,直到所有数据注释验证完成。删除[Required]允许执行自定义验证。

EDIT:

在验证对象时,在Validator中应用以下过程。ValidateObject:

  1. 验证属性级属性
  2. 如果任何验证器无效,则中止验证并返回失败
  3. 验证对象级属性
  4. 如果任何验证器无效,则中止验证并返回失败
  5. 如果在桌面框架上并且对象实现了IValidatableObject,那么调用它的Validate方法并返回任何失败
http://jeffhandley.com/archive/2009/10/16/validator.aspx

验证将在第2步终止。