【问题标题】:Getting public functions using Roslyn使用 Roslyn 获取公共函数
【发布时间】:2018-08-22 15:28:26
【问题描述】:

我有以下代码,我从文件中提取所有方法。

var tree = file.GetSyntaxTreeAsync().Result;
var methodDeclarations = tree.GetRoot().DescendantNodes().OfType<MethodDeclarationSyntax>().ToList();

我怎样才能只获得公共功能?

【问题讨论】:

  • 你需要语义模型。

标签: c# roslyn


【解决方案1】:

如果您要查找文件中标记为公共的方法,您可以使用 MethodDeclarationSyntax 对象的 Modifiers 属性,如下所示:

        var publicMethods = root.DescendantNodes()
            .OfType<MethodDeclarationSyntax>()
            .Where(method =>
                method.Modifiers.Where(modifier =>
                    modifier.Kind() == SyntaxKind.PublicKeyword)
                .Any());

如果您对此文件中声明的类的所有公共方法感兴趣,则需要注意@Slaks 的建议并使用语义模型,因为在父类中声明的公共方法不会仅使用语法分析。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多