簡體   English   中英

使用Roslyn查找屬性“invocations”

[英]Find property “invocations” with Roslyn

我正在嘗試構建C#方法和屬性的調用圖。 這實質上意味着我在項目中搜索MethodDeclarationSyntaxPropertyDeclarationSyntax節點。 然后,我通過以下方式查找方法調用,在這些節點之間建立連接:

SyntaxNode node = ...; //Some syntax node
var methodInvocations = node.DescendantNodesAndSelf().OfType<InvocationExpressionSyntax>();
//Process these method invocations

是否有類似的方法或推薦的方法來查找所有屬性“調用”? 我相信C#編譯器會在編譯時將屬性分解為Getter和Setter函數。

使用Roslyn檢測屬性使用的最佳方法是什么?

Roslyn模型遵循源,而不是IL,因此不會表示對get和set方法的單獨調用。

為此,您需要找到所有MemberAccessExpressionIdentifierNameSyntax節點,並調用GetSymbolInfo以查看它們是否引用該屬性。

或者,您應該考慮提升級別以使用工作區模型並調用FindReferences API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM