使用 Fluent Validation 在 ServiceStack 中进行复杂(深层嵌套)请求验证

Complex (deeply nested) request validation in ServiceStack, using Fluent Validation

当模型具有嵌套多个级别的属性时,我正在尝试在 ServiceStack DTO 中使用 Fluent Validation。

示例:模型结构如下 A => B => C => D => E

在不冒 nullref 风险的情况下验证 B。异常,我需要(成功)验证 A。

要验证 C,A 和 B 必须不为空。

D 和 E 具有交叉依赖性,因此要验证 E,则 A、B、C 和 D 不得为空。

似乎可用于此场景的唯一方法是将整个内容包装在 when/dependent 块中,但这很快变得难以管理。

如有任何想法,我们将不胜感激!

谢谢,

使用受 When() 块约束的多个验证器的替代方法是使用 "Must" predicate validator, create a Custom Validator 或避免对这些复杂的验证使用 Fluent Validation 并在您的服务中验证它们,您可以使用完整的 C# 来正常验证它们。

使用请求 DTO 属性 的名称在您的服务中抛出 ArgumentException(message,paramName) 将填充结构化 ResponseStatus 错误集合中的错误。