匿名函数显示结束函数警告
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)
我正在试用 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)