gpt4 book ai didi

c# - SyntaxWalker 访问者不访问方法

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:27 24 4
gpt4 key购买 nike

我得到了这个学步车

internal class MyWalker : CSharpSyntaxWalker
{
public int MethodCount { get; private set; }

public MyWalker() : base(Microsoft.CodeAnalysis.SyntaxWalkerDepth.Trivia)
{ }

public override void VisitMethodDeclaration(MethodDeclarationSyntax node)
{
MyMethodCount ++;
}

public override void VisitClassDeclaration(ClassDeclarationSyntax node)
{
Class++;
Complexity++;
}
}

我用这段代码调用walker

    var code = @"
public class foo
{
public void MyMethod()
{

}
}
";

SyntaxTree node = CSharpSyntaxTree.ParseText(source);
var root = node.GetRoot();

var walker = new MyWalker();
walker.Visit(root);

但从未调用访问方法声明。

为了确保我与 SyntaxTree Analyzer 进行了比较,我可以看到 roslyn 应该将其识别为方法声明。 enter image description here

我错过了什么?

最佳答案

我找到了。我在访问类方法中没有基本调用。所以只是我的一个错误

应该是这样

public override void VisitClassDeclaration(ClassDeclarationSyntax node)
{
[...]
base.VisitClassDeclaration(node); // this was missing
}

关于c# - SyntaxWalker 访问者不访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38763269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com