使用 LINQ 遍历语法树
你可以使用 LINQ 轻松导航语法树。例如,很容易获得所有 ClassDeclarationSyntax
节点(声明的类),其名称以字母 A
开头:
var allClassesWithNameStartingWithA = syntaxRoot.DescendantNodes()
.OfType<ClassDeclarationSyntax>()
.Where(x => x.Identifier.ToString().StartsWith("A"));
或者获取所有具有属性的类:
var allClassesWithAttriutes = syntaxRoot.DescendantNodes()
.OfType<ClassDeclarationSyntax>()
.Where(x => x.AttributeLists.Any(y => y.Attributes.Any()));