递归 class 的流畅验证

Fluent validations on a recursive class

我有一个像

这样的递归数据结构
public class Node
{
     public string Id { get; set; }
     public List<List<Node>> Nodes = new List<List<Node>>();
}

我已经为 Id 属性 定义了一个验证器,我想为节点 属性 中的所有节点元素 运行。我怎样才能做到这一点?我试过类似

RuleForEach(r => r.Nodes).ChildRules(c => c.RuleForEach(x => x).SetValidator(new NodeValidator()));

但这似乎是运行陷入无限循环。

您 运行 陷入了无限循环,因为您在 NodeValidator 的构造函数中创建了 NodeValidator 的新实例。

您应该将 this 指定为验证器:

RuleForEach(r => r.Nodes).ChildRules(c => c.RuleForEach(x => x).SetValidator(this));