2014-10-22 29 views
3

我試圖查看語法樹,但信息不夠,所以我創建了一個彙編並獲得了語法樹的語義模型。現在,我可以使用OfType<T>擴展方法,屬性和字段聲明,其中TPropertyDeclarationSyntaxFieldDeclarationSyntax如何獲取通過同一類的方法訪問的字段和屬性?

裏面的方法。 Body.Statements我以爲我可以尋找代表我從OfType<T>獲得的符號。但我很難弄清楚這一部分。語法樹只識別符號爲「IdentifierName」,這是沒有太大幫助的..

如果不看它,請讓我知道正確的方法。

回答

4

PropertyDecalartionSyntax上使用SemanticModel.GetDeclaredSymbol()或在FieldDefinitionSyntax內使用VariableDeclaratorSyntax中的一個。然後在標識符上使用SemanticModel.GetSymbolInfo()並查看它們是否匹配。 (注意,您應該使用ISymbol.Equals,因爲您可能得不到參考值相等的結果

+0

這確實有幫助雖然有一點需要注意'Field's,而不是盲目地將'FieldDeclarationSyntax'傳遞給'SemanticModel.GetDeclaredSymbol()'我們必須從每個Variables傳入'FieldDeclarationSyntax.Declaration.Variable'原因是,字段聲明可以用來聲明多個字段,而不是屬性,它只能聲明一個符號。 – javaCity 2014-10-22 16:32:08

相關問題