Я использую метод верхнего уровня When () для условного выполнения проверки на основе состояния объекта, например,
When(c => c.Status == "Existing", () => {
RuleFor(c => c.Code).NotEmpty();
RuleFor...
});
Хотя код очень прост для чтения и отслеживания, встроенный обмен сообщениями об ошибках оставляет желать лучшего, поскольку он не предоставляет потребителю никакого контекста относительно причины возникновения ошибки, например, FluentValidation.ValidationException: Validation failed:
-- Code: 'Code' must not be empty.
Code
требуется только тогда, когда объект находится в определенном Status
. Я хотел бы, чтобы в сообщении об ошибке указывалось условие, связанное с ошибкой проверки, т.е. FluentValidation.ValidationException: Validation failed:
-- Code: 'Code' must not be empty when Customer is in 'Existing' status.
В идеале я хотел бы полагаться на существующие встроенные сообщения об ошибках и просто добавлять или оборачивать их по отдельности или в массовом порядке. Я не хочу переопределять сообщение об ошибке для каждого валидатора в условии. Я не вижу никаких встроенных средств для этого. Я скучаю по одному? Есть ли способ достичь этого с низким коэффициентом трения?