Проверка сложного дочернего элемента, допускающего значение NULL, с помощью условного оператора NULL с помощью FluentVal ⇐ C#
Проверка сложного дочернего элемента, допускающего значение NULL, с помощью условного оператора NULL с помощью FluentVal
Я пишу проверку для сложного типа с дочерними элементами, допускающими значение NULL, с использованием условного оператора NULL ?. Пример ниже. У меня есть BarValidator, который я хочу вызвать, если установлен Foo.Bar. Как мне этого добиться?
RuleFor(foo => foo.Bar).SetValidator(new BarValidator()) не будет компилироваться, поскольку BarValidator ожидает Bar, не Бар?. Очевидно, что один из способов — удалить нулевой условный оператор, но я не хочу менять свои классы, чтобы иметь возможность проверять их. Другой способ — изменить на AbstractValidator, однако я хочу, чтобы этот валидатор можно было повторно использовать для Bar.
Использование FluentValidation 11.8.1 в .Net8.
публичный класс Foo(Bar? bar) { общественный бар? Бар = бар; } публичный класс Bar (строковое значение) { общедоступная строка Value {get; } = значение; } открытый класс FooValidator: AbstractValidator { публичный FooValidator() { RuleFor(foo => foo.Bar).SetValidator(new BarValidator()); } } общедоступный класс BarValidator: AbstractValidator { публичный BarValidator() { RuleFor(foo => foo.Value).NotEmpty(); } }
Я пишу проверку для сложного типа с дочерними элементами, допускающими значение NULL, с использованием условного оператора NULL ?. Пример ниже. У меня есть BarValidator, который я хочу вызвать, если установлен Foo.Bar. Как мне этого добиться?
RuleFor(foo => foo.Bar).SetValidator(new BarValidator()) не будет компилироваться, поскольку BarValidator ожидает Bar, не Бар?. Очевидно, что один из способов — удалить нулевой условный оператор, но я не хочу менять свои классы, чтобы иметь возможность проверять их. Другой способ — изменить на AbstractValidator, однако я хочу, чтобы этот валидатор можно было повторно использовать для Bar.
Использование FluentValidation 11.8.1 в .Net8.
публичный класс Foo(Bar? bar) { общественный бар? Бар = бар; } публичный класс Bar (строковое значение) { общедоступная строка Value {get; } = значение; } открытый класс FooValidator: AbstractValidator { публичный FooValidator() { RuleFor(foo => foo.Bar).SetValidator(new BarValidator()); } } общедоступный класс BarValidator: AbstractValidator { публичный BarValidator() { RuleFor(foo => foo.Value).NotEmpty(); } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение