응용 프로그램의 각 클래스 메서드 내에서 메서드 호출과 호출을 식별 할 수 있습니다. 그러나 어떻게 호출되거나 호출되는 클래스를 얻을 수 있습니까? 예를 들어 다음 코드에서 Roslyn에서 메서드 호출의 기본 클래스 얻기
:var methodDeclarations = classitem.DescendantNodes().OfType<MethodDeclarationSyntax>();
foreach (var memmeth in methodDeclarations)
{
var varInvocations = memmeth.DescendantNodes().OfType<InvocationExpressionSyntax>();
foreach (InvocationExpressionSyntax invoc in varInvocations)
{
Console.WriteLine("---- Invocations---");
Console.WriteLine(invoc.Expression); // output: b1.ADD
Console.WriteLine(invoc.Expression.Parent.GetText()); // output: b1.ADD(2)
}
}
내가 할 수있는, 예를 들어, 출력으로 "b1.ADD"얻을 "b1.ADD을 (2)". 이걸 추출해야하는 것은 ADD가 B 클래스의 인스턴스 인 b1에 호출된다는 것입니다. 위의 코드에서이 B 클래스를 호출 할 때 어떻게 얻을 수 있습니까? 즉,이 메소드가 속한 클래스 유형을 알려줘야합니다. 어떻게해야합니까?
'InvocationExpressionSyntax'는'MemberBindingExpressionSyntax'을 포함하고'MemberBindingExpressionSyntax'는 어떤 진단 ('membind.GetDiagnostics()')을 포함합니까? – grek40