Это здорово, я проверю это, когда доберусь до работы завтра

аю Roslyn демо для генерации предупреждений компилятора из атрибутов

У меня есть анализатор для анализа вызовов методов, который выглядит так:

public override void Initialize(AnalysisContext context)
{
    context.RegisterSyntaxNodeAction(AnalyzerInvocation, SyntaxKind.InvocationExpression);
}

private static void AnalyzerInvocation(SyntaxNodeAnalysisContext context)
{
    var invocation = (InvocationExpressionSyntax)context.Node;
}

Я пытаюсь выяснить, как получить объявление метода, я знаю, что могу использоватьSymbolFinder искать объявление метода

var model = compilation.GetSemanticModel(tree);

//Looking at the first method symbol
var methodSyntax = tree.GetRoot().DescendantNodes().OfType<MethodDeclarationSyntax>()
   .First(/*TODO: Execute Find for related symbol */);

Этот параметр дорог и раздражает, и он оставляет возможность ошибки, потому что, если ваш вызывающий метод исходит из сборки.

Какой самый простой способ получить объявление метода из InvocationExpressionSyntax? Должен ли я просто использовать средство поиска символов и, если он не работает, очистить импортированные сборки или есть более простой способ?

Ответы на вопрос(0)

Ваш ответ на вопрос