检查Roslyn中2个节点之间的父/子关系

时间:2016-12-23 13:49:43

标签: c# .net roslyn

假设您在Roslyn中有2个SyntaxNode,并且您想检查它们是否处于父/子关系中。

Roslyn是否为此提供了实用方法,而不是自己使用walker并自己实现逻辑(有许多方法,也使用Parent属性)?类似的东西:

bool IsChildParentOf(SyntaxNode node1, SyntaxNode node2);

为什么我要问

所以,只是为了澄清,我在问,因为在Roslyn中可能有一种优化方式来做到这一点:

bool IsChildOf(SyntaxNode node, SyntaxNode parent) {
  for (var currentNode = node; currentNode != null; currentNode = currentNode.Parent)
    if (currentNode == parent) return true

  return false;
}

例如,在浏览器中,您可以使用内部词典来保持对元素的引用。这些引用有助于将搜索操作固定在树中。也许罗斯林也有这个功能吗?

0 个答案:

没有答案