2016-07-10 9 views
1

.Net 용 코드 수정 공급자에서 작업하고 있습니다.IMethodSymbol에 대한 진술을 얻는 방법?

메소드 내부를 확인하고 싶습니다. IMethodSymbol 메서드 문 내가 입력에 다음 코드 한 예를 들어

: 나는 IMethodSymbol 인터페이스를 가지고, 등 방법 문을 얻을 수있는 능력, 내부 노드가 존재하지 않는 코드 수정 측면에서

public void DoSomething(string input) 
{ 
    if(input == null) 
     throw new InvalidOperationException("!!!!"); 
} 

(I 'if', 'if'조건, 예외 발생 등)을보고 싶습니다.

어떻게받을 수 있습니까?

+0

"코드 수정 측에서 IMethodSymbol 인터페이스가 있습니다"라고 말하면 어떻게이 방법 기호로 끝났습니까? 메서드 문을 얻을 수있는 기본 구문 노드가 없습니다 (예 : [MethodDeclarationSyntax] (http://source.roslyn.io/#Microsoft.CodeAnalysis.CSharp/Syntax/MethodDeclarationSyntax.cs)). ? –

+0

@PhilGref 제 경우에는 메서드가 궁극적으로 특정 형식의 특정 메서드를 재정의하는지 여부를 식별 할 수 있도록 의미 노드를 등록해야합니다. 그렇다면 본문의 구문을 구문 분석해야하며 매개 변수 중 하나가 어떻게 처리되는지보십시오. – jnm2

답변

6

DeclaringSyntaxReferences 속성을 사용하여 메서드를 정의하는 구문 트리를 가져옵니다.

부분 메소드에는 두 개의 노드가 있습니다.

메타 데이터에 정의 된 메서드 (참조 된 어셈블리)에는 아무 것도 없습니다.