2017-04-08 4 views
2

Roslyn을 사용하는 방법을 배우려고 노력 중이며 통과 방법을 파악하는 데 많은 어려움을 겪고 있습니다. 현재로서는 가능한 것을 이해하려고 실험하는 것에 중점을 둡니다.Roslyn - 호출 된 메서드 호출 방법 알아보기

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

Method2가 Method1을 호출하는지 확인하려면 구문 트리를보고 있기 때문에 쉽습니다. 내가 이해한다면 Method3을보고 있는데 Method2를 찾고 싶다면 Method2가 다른 파일/네임 스페이스/etc에있을 수 있기 때문에 의미 론적 트리를 사용해야한다.

제 질문은 Method2의 IMethodSymbol 만있는 경우 Method2가 Method1을 호출하는지 확인하는 방법이 있습니까? 내가 제대로 이해하면 어떤 도움

덕분에

답변

2

, 당신은 Method2Method1-Method2에 대한 MethodDeclarationSyntax에서 IMethodSymbolMethod3에 대한 MethodDeclarationSyntax에서 얻을하는 방법을 알고,하지만 당신은 IMethodSymbol에서 얻을하는 방법을 모른다 Method2 ~ MethodDeclarationSyntax ~ Method2입니다. 그렇게하려면

, 당신은 DeclaringSyntaxReferences 사용할 수 있습니다

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

을 내가 찾던 정확히 무엇을! 감사! –