我有以下规则:
RuleFor(x => x.FromNumber).NotEmpty().GreaterThan(0).When(x => x.NumbersRequired).WithState(x => MyErrorEnum.FromNumberRequired);
属性FromNumber
的类型为int?
。上述问题在于,CustomState
仅对GreaterThan
设置。如果值为null或0,则CustomState
为null。
如果我将上述更改为以下内容,则规则仍按预期工作:
RuleFor(x => x.FromNumber ?? 0).GreaterThan(0).When(x => x.NumbersRequired).WithState(x => MyErrorEnum.FromNumberRequired);
但是,除了使用空条件运算符之外,有没有更好的方法将两个规则合并为一个规则?
RuleFor(x => x.ToNumber).NotEmpty().GreaterThan(x => x.FromNumber)
? - Ivan-Mark DebonoRuleFor(x => x.ToNumber).Muxt((model, x) => x != null && x > model.FromNumber);
。 - David Levin