如何将RuleSet传递给FluentValidation构造函数?

时间:2016-02-09 12:08:39

标签: c# fluentvalidation

如何将特定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

0 个答案:

没有答案