public override async Task RegisterCodeFixesAsync(CodeFixContext context) { SyntaxNode root = await context.GetSyntaxRootAsync().ConfigureAwait(false); if (!TryFindNode(root, context.Span, out SyntaxNode node)) { return; } Diagnostic diagnostic = context.Diagnostics[0]; if (diagnostic.Properties.TryGetValue("Identifier", out string identifier)) { CodeAction codeAction = CodeAction.Create( Title, ct => UseNameOfOperatorRefactoring.RefactorAsync(context.Document, (LiteralExpressionSyntax)node, identifier, ct), GetEquivalenceKey(diagnostic)); context.RegisterCodeFix(codeAction, diagnostic); } else { CodeAction codeAction = CodeAction.Create( Title, ct => UseNameOfOperatorRefactoring.RefactorAsync(context.Document, (InvocationExpressionSyntax)node, ct), GetEquivalenceKey(diagnostic)); context.RegisterCodeFix(codeAction, diagnostic); } }
public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { SyntaxNode root = await context.GetSyntaxRootAsync().ConfigureAwait(false); if (!TryFindFirstAncestorOrSelf(root, context.Span, out LiteralExpressionSyntax node)) { return; } string identifier = context.Diagnostics[0].Properties["Identifier"]; CodeAction codeAction = CodeAction.Create( "Use nameof operator", cancellationToken => UseNameOfOperatorRefactoring.RefactorAsync(context.Document, node, identifier, cancellationToken), GetEquivalenceKey(DiagnosticIdentifiers.UseNameOfOperator)); context.RegisterCodeFix(codeAction, context.Diagnostics[0]); }
public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { SyntaxNode root = await context.GetSyntaxRootAsync().ConfigureAwait(false); LiteralExpressionSyntax node = root .FindNode(context.Span, getInnermostNodeForTie: true)? .FirstAncestorOrSelf <LiteralExpressionSyntax>(); if (node == null) { return; } CodeAction codeAction = CodeAction.Create( "Use nameof operator", cancellationToken => UseNameOfOperatorRefactoring.RefactorAsync(context.Document, node, cancellationToken), DiagnosticIdentifiers.UseNameOfOperator + EquivalenceKeySuffix); context.RegisterCodeFix(codeAction, context.Diagnostics); }