我正在尝试FluentValidation,并且正在将C#规则集示例转换为 VB.NET。
问题:为什么VS 2019将绿色波浪线放在End Function
下,说明该函数不会在所有代码路径上返回值。我是否应该在匿名函数中执行更多操作来删除此警告?就这么忽略了?
下面是原始的 C# 示例:
public class PersonValidator : AbstractValidator<Person> {
public PersonValidator() {
RuleSet("Names", () => {
RuleFor(x => x.Surname).NotNull();
RuleFor(x => x.Forename).NotNull();
});
}
}
这是我在 VB.NET 中的转换和应用,以及我自己的类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中的"显示潜在修复"不显示任何内容。
函数需要返回一个值。您的没有,因此,您应该改用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
如果你不需要在你的sub内部有更多的线条,你可以像这样去掉End Sub
部分:
RuleSet("OnCreate", Sub() RuleFor(Function(x) x.CustomerID).NotEmpty)