我有一个像这样的递归数据结构
public class Node
{
public string Id { get; set; }
public List<List<Node>> Nodes = new List<List<Node>>();
}
我为Id属性定义了一个验证器,我想为Nodes属性中的所有Node元素运行该验证器。我怎样才能做到这一点?我尝试过类似
RuleForEach(r => r.Nodes).ChildRules(c => c.RuleForEach(x => x).SetValidator(new NodeValidator()));
但这似乎正在陷入无限循环。
答案 0 :(得分:1)
因为要在NodeValidator
的构造函数中创建NodeValidator
的新实例,所以您陷入了无限循环。
您应该分配this
作为验证者:
RuleForEach(r => r.Nodes).ChildRules(c => c.RuleForEach(x => x).SetValidator(this));