无法将表达式类型'void'转换为返回类型'FluentValidation.Results.ValidationResult'

时间:2013-05-07 18:22:59

标签: c# validation

这不应该是一个难以回答的问题,但我不能为我的生活弄清楚为什么会抛出这个错误。

我有一个验证结果,我试图在条件被命中时添加失败。

ValidationResult result = new ValidationResult();
//Do not call if nothing is in list.
if (List.Count == 0)
{
    ValidationFailure failure = new ValidationFailure("Nothing","Must pick something"){CustomState = ValidationLevel.Critical};
    return view.policyResult.Errors.Add(failure);
}
    return manager.Validate();

如果出现问题,请告诉我! 如果列表大于0,我添加了return语句。它只是转到管理器,验证并返回验证结果。

3 个答案:

答案 0 :(得分:1)

Add不返回任何内容,它是void方法。您需要调用add然后返回...无论您想要返回什么(可能是您之前创建的failure对象?)。

view.policyResult.Errors.Add(failure);
return failure;

答案 1 :(得分:0)

该行

 view.policyResult.Errors.Add(failure);

调用方法Add没有返回值(void),而调用此行的方法需要返回类型为FluentValidation.Results.ValidationResult的对象的实例

如果类ValidationFailure派生自ValidationResult,那么您可以尝试返回

  return failure ;

但是,您的方法可能不会进入if条件(List.Count> 0),我们不知道接下来会发生什么。
再次,只是一个猜测,但你想返回在if

之前声明的result ValidationResult实例

答案 2 :(得分:0)

Add是C#中的void方法。要返回所需的自定义失败消息,您需要调用return和您创建的失败对象。

史蒂夫指出,你是否有可能没有输入if语句但是尝试添加

return failure;