Правило выполнения плавной проверки в зависимости от нескольких других правилC#

Место общения программистов C#
Anonymous
Правило выполнения плавной проверки в зависимости от нескольких других правил

Сообщение Anonymous »

Предположим, у нас есть несколько валидаторов:

Код: Выделить всё

RuleFor(request => request.User)
.NotEmpty()
.Must(Exist);

RuleFor(request => request.Room)
.NotEmpty()
.Must(Exist);

RuleFor(request => request.Room)
.Must(UserMustHavePermissionForThisRoom);
Как я могу выполнить третье правило, только если два других правила проходят без использования каскадного поведения, если это возможно. Я где-то читал, что могу в основном проверить запрос, а затем просто поместить все в ChildRules или DependentRules вот так:

Код: Выделить всё

RuleFor(request => request)
.ChildRules((inlineValidator) => {
inlineValidator.RuleFor(request => request.UserId)
.NotEmpty()
.Must(Exist);
inlineValidator.RuleFor(request => request.Room)
.NotEmpty()
.Must(Exist);
})
.DependenRules(() => {
RuleFor(request => request.Room)
.Must(UserMustHavePermissionForThisRoom);
});
Это заставит валидатор работать так, как мне нужно. Но это также портит некоторые заполнители в сообщениях проверки (например, PropertyName). Я думаю, это потому, что я начинаю с проверки самого запроса и не хочу иметь дело с необходимостью управлять каждым отдельным свойством. вручную (мой валидатор довольно большой и содержит некоторые сложные проверки).
Есть ли лучший способ обработки таких условных проверок?

Подробнее здесь: https://stackoverflow.com/questions/788 ... ther-rules

Вернуться в «C#»