当AbstractValidator是一个数组时,FluentValidation

时间:2016-10-14 12:52:15

标签: c# asp.net fluentvalidation

希望针对数组本身以及数组中的项运行验证。我们无法将数组包装在另一个类中。问题是我似乎无法通过验证数组本身的项目来进行验证。

public class MyItemArrayValidator : AbstractValidator<MyItem[]>
{
    RuleFor(list => list)
        .Must(list => list.Length <= 25)
        .WithMessage("Too many items in array"));

    //Line that does not work below
    RuleFor(list => list).SetCollectionValidator(new MyItemValidator());
}

public class MyItemValidator : AbstractValidator<MyItem>
{
    ... validate MyItem stuff
}

更新
调用行时返回错误...

RuleFor(list => list).SetCollectionValidator(new MyItemValidator());

是“嵌套验证器只能与成员表达式一起使用”。

我理解错误是因为我正在处理对象而不是成员,所以这种方法可能不正确。

1 个答案:

答案 0 :(得分:1)

我在文档中使用

RuleForEach

SetValidator

$File = ((Get-Content -Encoding UTF8 -path Test.json -Raw)

$File = $File| ConvertFrom-Json
$File.address = $File.address | Select-Object * -ExcludeProperty streets #This line changes it to an object instead of an array

FluentValidationDocumentation-link