[英]Find property “invocations” with Roslyn
我正在嘗試構建C#方法和屬性的調用圖。 這實質上意味着我在項目中搜索MethodDeclarationSyntax
和PropertyDeclarationSyntax
節點。 然后,我通過以下方式查找方法調用,在這些節點之間建立連接:
SyntaxNode node = ...; //Some syntax node
var methodInvocations = node.DescendantNodesAndSelf().OfType<InvocationExpressionSyntax>();
//Process these method invocations
是否有類似的方法或推薦的方法來查找所有屬性“調用”? 我相信C#編譯器會在編譯時將屬性分解為Getter和Setter函數。
使用Roslyn檢測屬性使用的最佳方法是什么?
Roslyn模型遵循源,而不是IL,因此不會表示對get和set方法的單獨調用。
為此,您需要找到所有MemberAccessExpression
和IdentifierNameSyntax
節點,並調用GetSymbolInfo以查看它們是否引用該屬性。
或者,您應該考慮提升級別以使用工作區模型並調用FindReferences
API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.