FluentValidation可以与嵌套集合一起工作吗?
本文关键字:一起 工作 集合 嵌套 FluentValidation | 更新日期: 2023-09-27 18:02:23
FluentValidation可以与分层集合一起工作吗?可以验证以下具有任意数量子节点的对象吗?
public class Node
{
public string Id { get; set; }
public List<Node> ChildNodes { get; set; }
}
用非常简单的术语来说,我希望下面的代码工作:
public class NodeValidator : AbstractValidator<Node>
{
public NodeValidator()
{
RuleFor(x => x.ChildNodes).SetCollectionValidator(new NodeValidator());
RuleFor(x => x.Id).NotEmpty();
}
}
这一行导致StackOverflow异常:
RuleFor(x => x.ChildNodes).SetCollectionValidator(new NodeValidator());
如何验证深度嵌套对象的属性"Id" ?
接受的答案不再是实际的。SetCollectionValidator
方法已弃用
应该使用RuleForEach
和SetValidator
。正确的代码是:
RuleForEach(x => x.ChildNodes).SetValidator(this);
为了避免在您的函数中递归,我将使用
更正您的验证器。RuleFor(x => x.ChildNodes).SetCollectionValidator(this);
我给了它一个尝试,它似乎检索验证错误正确,但是…