Fluent Validator缺少SetCollectionValidator()方法

时间:2014-05-29 21:59:07

标签: c# validation fluentvalidation

我是流利验证的新手,刚从nu Get昨天获得版本5.3 。我正在尝试将现有验证器(PhoneValidator)应用于类(Employee)的集合属性(ICollection)。 Fluent Validator文档说要使用:

RuleFor(x => x.Orders).SetCollectionValidator(new OrderValidator()); // example usage

然而, SetCollectionValidator()方法在我的版本上不可用。相反,只有 SetValidator()标记为 [已弃用] 。我已经看到有关同样情况的其他帖子,并且已经了解到SetCollectionValidator()是一个扩展方法,需要确保我已导入FluentValidation。我做。

我在这里缺少什么?

using FluentValidation;
using FluentValidation.Validators;

public class EmployeeValidator : AbstractValidator<Employee>
{
    public EmployeeValidator()
    {            
        // SetCollectionValidator doesn't show in intellisense and won't compile
        RuleFor(e => e.PhoneNumbers).SetCollectionValidator(new PhoneValidator()); 
    }
}

public class PhoneValidator : AbstractValidator<Phone>
{
    public PhoneValidator()
    {
        RuleFor(e => e.Number).Length(10).Matches("^[0-9]$");            
    }
}

1 个答案:

答案 0 :(得分:8)

我来晚了,但这是谷歌的第一次打击所以我认为它可以帮助别人。似乎API已经改变,你现在需要做:

RuleForEach(e => e.PhoneNumbers).SetValidator(new PhoneValidator());

我认为更好一点。