如何在一个规则中添加多个 IF 条件?

How to add multiple IF conditions in one rule?

如果我有以下规则:

if (a == true && b == 0)
   return errorsenum.somerror1;
else if (b < c)
   return errorsenum.somerror2;

如何将以上内容作为 FluentValidation 规则实施?

编辑:

这 2 条规则行得通吗?

RuleFor(x => x.b).GreaterThan(0).When(x => x.a);
RuleFor(x => x.b).GreaterThanOrEqualTo(x => x.c);

你基本上就在那里。我想这就是你想要的:

RuleFor(x => x.b).GreaterThan(0).When(x => x.a).WithMessage("SomeError1");
RuleFor(x => x.b).GreaterThanOrEqualTo(x => x.c).When(x => !x.a).WithMessage("SomeError2");

因此只需过滤第二条规则,使其仅在 "a" 为 false 时运行,并将自定义消息添加到每个规则。

Fluent validation 总是会运行你的所有规则,即使第一个失败,所以如果你想有选择性,你需要继续使用 When() 。

如果您有一堆规则要在 a == true 时进行验证,则可以改用此模式:

When(x => x.a, () =>
{
    RuleFor(x => x.b).GreaterThan(0).WithMessage("SomeError1");
    RuleFor(x => x.c).LessThan(0).WithMessage("SomeError3");
});