Анонимная функция, отображающая предупреждение о завершении функции - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь использовать FluentValidation и преобразовываю пример C # RuleSet в 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 ничего не показывает.

1 Ответ

0 голосов
/ 22 октября 2019

Функция должна возвращать значение. Поэтому ваш не следует использовать 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)
...