2017-04-08 17 views
2

私はRoslynを使用する方法を学びたいと思っており、回避方法を理解するために多くの考えを持っているロードブロッキングを続けています。現時点では、可能なことを理解するための実験に焦点を当てています。Roslyn - 呼び出されたメソッドが呼び出されたかどうかを調べる

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

Method2がMethod1を呼び出すかどうかを確認するには、構文ツリーを調べるだけで簡単です。私が理解しているように、Method3を見ていてMethod2を探したいのであれば、Method2は別のファイル/名前空間/ etcにあるかもしれないので意味木を使うべきです。

私の質問は、Method2のIMethodSymbolしか持っていない場合、Method2がMethod1を呼び出すかどうかを調べる方法はありますか?私が正しくあなたを理解していれば任意の助け

おかげで

答えて

2

は、あなたがMethod2ためとMethod1からMethod2ためMethodDeclarationSyntaxからIMethodSymbolMethod3ためMethodDeclarationSyntaxから取得する方法を知っていますが、IMethodSymbolから取得する方法がわかりませんMethod2~MethodDeclarationSyntax~Method2である。これを行うには

、あなたはDeclaringSyntaxReferencesを使用することができます。

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

私が探していたまさに!ありがとう! –

関連する問題