Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Roslyn将忽略子树_C#_Syntax_Roslyn_Roslyn Code Analysis - Fatal编程技术网

C# Roslyn将忽略子树

C# Roslyn将忽略子树,c#,syntax,roslyn,roslyn-code-analysis,C#,Syntax,Roslyn,Roslyn Code Analysis,我试图使用Roslyn并通过扩展CSharpSyntaxWalker并重写其Visit…方法来实现我自己的节点访问者。但我有个问题 考虑以下C类: 我只需要对MyClass中定义的方法作出反应。我可以得到该节点的引用。因此,我可以获得一个表示MyClass的SyntaxNode的引用,这样我就可以: CSharpSyntaxWalker.Visit(node); // node is a SyntaxNode 但是,访问将对GetSomething方法作出反应,我希望将其从访问中排除。实际上,

我试图使用Roslyn并通过扩展
CSharpSyntaxWalker
并重写其
Visit…
方法来实现我自己的节点访问者。但我有个问题

考虑以下C类:

我只需要对
MyClass
中定义的方法作出反应。我可以得到该节点的引用。因此,我可以获得一个表示
MyClass
SyntaxNode
的引用,这样我就可以:

CSharpSyntaxWalker.Visit(node); // node is a SyntaxNode
但是,访问将对
GetSomething
方法作出反应,我希望将其从访问中排除。实际上,我想排除
MyClass2
。因此,在我的自定义walker中,我可以重写visit方法以对方法作出反应,但是当我遇到类声明时,我希望指示访问者忽略该节点

public class MyWalker : CSharpSyntaxWalker {
  public override void VisitMethodDeclaration { ... }
  public override void VisitClassDeclaration {
    // Do something to exclude this node and its subtree from the visit...
  }
}

我该怎么做呢?

不要调用
base。对于不想递归的节点,请访问

不要调用
base。对于不想递归的节点,请访问

public class MyWalker : CSharpSyntaxWalker {
  public override void VisitMethodDeclaration { ... }
  public override void VisitClassDeclaration {
    // Do something to exclude this node and its subtree from the visit...
  }
}