如何将特定RuleSet的名称传递给内部验证器(对于Orders)?
我希望有条件地应用它,基于外部验证器中可用的属性(对于客户端)。
validator.Validate(client, ruleSet: "Production");
public class ClientValidator : AbstractValidator<Client>
{
public ClientValidator()
{
RuleSet("Production", () =>
{
RuleFor(client => client.Orders)
.SetCollectionValidator(new OrderValidator());
When(client => client.IsVIP, () => {
RuleFor(client => client.Orders).Must((client, orders) =>
HaveDiscount(orders));
});
});
}
private static bool HaveDiscount(IEnumerable<Order> orders)
{
foreach (var order in orders)
{
if (order.Discount <= 0)
{
return false;
}
}
return true;
}
}
好的,我可以做自定义方法,如下面的示例,但想知道,如果有更优雅的方式。
-f