1
Roslyn을 사용하여 소스 파일에서 다양한 메소드 호출 정보를 추출하려고합니다. 정교하게 - 입력 파일 내에서 발생하는 모든 메서드 호출을 찾고 싶습니다.Roslyn의 확장 메소드 정보
내가 부딪히는 한 가지 문제는 확장 방법과 관련이 있습니다. Aggregate
, Sum
등의 Linq
메서드를 고려하십시오. InvocationExpressionSyntax
에서 호출되는 메서드가 클래스의 단순 멤버 메서드가 아닌 확장 메서드 인 것을 어떻게 알 수 있습니까?
내가 입력 한 소스 파일은 컴파일 될 것으로 예상 될 수 있습니다. 즉, GetDiagnostics()
은 오류가 발생하지 않습니다.
var methodInfo = model.GetSymbolInfo(invocation);
if (methodInfo.Symbol != null)
{
var mSymbol = (IMethodSymbol)methodInfo.Symbol;
if (mSymbol.ReducedFrom != null)
{
// this is an extension method !
}
}