Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义验证未执行_C#_C# 4.0_Data Annotations - Fatal编程技术网

C# 自定义验证未执行

C# 自定义验证未执行,c#,c#-4.0,data-annotations,C#,C# 4.0,Data Annotations,我在WPF应用程序中有一个视图模型类,它有一些非常复杂的验证。我已经实现了IValidatableObject接口来提供自定义验证逻辑。问题是我的IEnumerable验证(ValidationContext ValidationContext)从未被调用 以下是尝试验证的代码: Validator.TryValidateObject(RMA,新的ValidationContext(RMA,null,null),结果) 你知道为什么验证器对象没有调用我的自定义验证代码吗?问题是我在自定义类中的一

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

以下是尝试验证的代码:
Validator.TryValidateObject(RMA,新的ValidationContext(RMA,null,null),结果)


你知道为什么
验证器
对象没有调用我的自定义验证代码吗?

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

编辑:

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

  • 验证属性级别属性
  • 如果任何验证程序无效,则中止验证并返回失败
  • 验证对象级属性
  • 如果任何验证程序无效,则中止验证并返回失败
  • 如果在桌面框架上,对象实现了
    IValidatableObject
    ,则调用其验证方法并返回任何失败

  • 验证将在步骤#2中止。

    断点是否可以帮助您?你能给我们一个你的代码的例子或者一个代表你的问题的代码片段吗?一个断点被设置了,但是永远不会被击中。老实说,我的
    Validate
    方法此时为空。很抱歉重复,但是;你能给我们一些你的代码的例子或者一个表示你的问题的代码片段吗?这些代码非常乏味:
    public IEnumerable Validate(ValidationContext ValidationContext){string s=“breakpoint here”;}
    Validator.TryValidateObject(RMA,new ValidationContext(RMA,null,null),result)你最后是怎么做到的?=)由于这个问题,我开始使用自定义ValidationAttribute类。