匿名函数显示结束函数警告

Anonymous Function Showing End Function Warning

我正在试用 FluentValidation,我正在将 C# RuleSet 示例转换为 VB.NET。

问题:为什么 VS 2019 将绿色波浪线放在 End Function 下,说明该函数没有 return 所有代码路径上的值.我应该在匿名函数中做更多的事情来删除这个警告吗?直接忽略?

这是原始的 C# 示例:

public class PersonValidator : AbstractValidator<Person> {
  public PersonValidator() {
     RuleSet("Names", () => {
        RuleFor(x => x.Surname).NotNull();
        RuleFor(x => x.Forename).NotNull();
     });
   }
}

这里是我在VB.NET的转换和应用,用我自己的class ContractDTO:

Public Class ContractValidator
    Inherits AbstractValidator(Of ContractDTO)

    Public Sub New()

        RuleSet("OnCreate",
            Function()
                RuleFor(Function(x) x.CustomerID).NotEmpty
            End Function ' Green squiggly line warning here.
        )

    End Sub

End Class

编辑: 请注意 Visual Studio 中的 "Show potential fixes" 什么也没显示。

一个函数需要return一个值。你的没有,因此,你应该使用 Sub/End Sub 代替:

Public Class ContractValidator
    Inherits AbstractValidator(Of ContractDTO)

    Public Sub New()
        RuleSet("OnCreate",
            Sub()
                RuleFor(Function(x) x.CustomerID).NotEmpty
                ' Add more lines.
            End Sub)
    End Sub
End Class

如果你的子程序中不需要更多行,你可以去掉 End Sub 部分,如下所示:

RuleSet("OnCreate", Sub() RuleFor(Function(x) x.CustomerID).NotEmpty)