2017-04-08 85 views
2

我正在努力學習如何使用羅斯林,我一直在尋找路障,需要大量的思想來弄清楚如何解決。目前,側重於試驗以瞭解什麼是可能的。羅斯林 - 找出是否調用方法調用方法

void Method1(){} 
void Method2() 
{ 
    Method1(); 
} 
void Method3() 
{ 
    Method2(); 
} 

如果我要檢查,如果方法2調用方法一,這很容易,因爲我只是看它的語法樹。據我瞭解,如果我正在查看Method3,但我想查找Method2,則應使用語義樹,因爲Method2可能位於不同的文件/命名空間/等。

我的問題是,如果我只有Method2的IMethodSymbol,有什麼方法可以找出Method2是否調用Method1?

感謝所有幫助

回答

2

如果我理解正確的話,你知道如何從MethodDeclarationSyntax獲得Method3IMethodSymbolMethod2MethodDeclarationSyntaxMethod2Method1,但你不知道如何從IMethodSymbol得到對於Method2MethodDeclarationSyntaxMethod2

要做到這一點,你可以用DeclaringSyntaxReferences

var method2Syntax = symbol.DeclaringSyntaxReferences.Single().GetSyntax(); 
+0

正是我一直在尋找!謝謝! –