使用 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()));