使用Roslyn获得公共职能

时间:2018-08-22 15:28:27

标签: c# roslyn

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

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

我怎么只能获得公共功能?

1 个答案:

答案 0 :(得分:1)

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

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

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