使用 Roslyn 获取 public 个函数
Getting public functions using Roslyn
我有以下代码,我从文件中提取所有方法。
var tree = file.GetSyntaxTreeAsync().Result;
var methodDeclarations = tree.GetRoot().DescendantNodes().OfType<MethodDeclarationSyntax>().ToList();
如何才能只获得public个函数?
如果您正在寻找文件中标记为 public 的方法,您可以使用 MethodDeclarationSyntax 对象的修饰符 属性,如下所示:
var publicMethods = root.DescendantNodes()
.OfType<MethodDeclarationSyntax>()
.Where(method =>
method.Modifiers.Where(modifier =>
modifier.Kind() == SyntaxKind.PublicKeyword)
.Any());
如果您对该文件中声明的 class 的所有 public 方法感兴趣,您需要听从@Slaks 的建议并使用语义模型,因为 public 在父 class 中声明的方法将不会仅使用语法分析显示。
我有以下代码,我从文件中提取所有方法。
var tree = file.GetSyntaxTreeAsync().Result;
var methodDeclarations = tree.GetRoot().DescendantNodes().OfType<MethodDeclarationSyntax>().ToList();
如何才能只获得public个函数?
如果您正在寻找文件中标记为 public 的方法,您可以使用 MethodDeclarationSyntax 对象的修饰符 属性,如下所示:
var publicMethods = root.DescendantNodes()
.OfType<MethodDeclarationSyntax>()
.Where(method =>
method.Modifiers.Where(modifier =>
modifier.Kind() == SyntaxKind.PublicKeyword)
.Any());
如果您对该文件中声明的 class 的所有 public 方法感兴趣,您需要听从@Slaks 的建议并使用语义模型,因为 public 在父 class 中声明的方法将不会仅使用语法分析显示。