gpt4 book ai didi

c# - 使用 NRefactory 从 C# 代码中获取所有方法

转载 作者:行者123 更新时间:2023-11-30 20:47:50 92 4
gpt4 key购买 nike

如何使用 NRefactory API 检索 C# 程序中的所有方法?

CSharpParser parser = new CSharpParser();
SyntaxTree tree = parser.Parse(code);

这会创建一个 SyntaxTree,但我如何才能仅从该 SyntaxTree 中获取方法列表?

最佳答案

有一个深入article about using NRefactory在 CodeProject 上可用。

要从 SyntaxTree 获取信息,您可以访问节点或使用类型系统。

要访问方法声明节点,您可以执行以下操作:

    var parser = new CSharpParser();
SyntaxTree tree = parser.Parse(code);

tree.AcceptVisitor(new MyVistor());

class MyVistor : DepthFirstAstVisitor
{
public override void VisitMethodDeclaration(MethodDeclaration methodDeclaration)
{
Console.WriteLine(methodDeclaration.Name);
base.VisitMethodDeclaration(methodDeclaration);
}
}

要使用 TypeSystem,您可以执行以下操作:

    var parser = new CSharpParser();
SyntaxTree tree = parser.Parse(code, "test.cs");

CSharpUnresolvedFile file = tree.ToTypeSystem();
foreach (IUnresolvedTypeDefinition type in file.TopLevelTypeDefinitions) {
foreach (IUnresolvedMethod method in type.Methods) {
Console.WriteLine(method.Name);
}
}

关于c# - 使用 NRefactory 从 C# 代码中获取所有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25468265/

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