【问题标题】:How to add rename annotation?如何添加重命名注释?
【发布时间】:2014-09-25 08:59:26
【问题描述】:

我正在编写自定义 CodeRefactoringProvider。我的重构生成了一些新变量。我希望用户重命名这些生成的变量。如何添加重命名注释,如“提取方法”重构中使用的注释?

命名空间 Microsoft.CodeAnalysis.Rename 仅公开静态类 Renamer,但它重命名符号而没有任何突出显示和用户交互,因此它不是一个选项。

【问题讨论】:

    标签: visual-studio annotations refactoring rename roslyn


    【解决方案1】:

    我找到了解决方案。所需的注释是 Microsoft.CodeAnalysis.CodeActions.RenameAnnotation

    这是创建新变量令牌的方法:

    SyntaxToken newVarToken = SyntaxFactory.VerbatimIdentifier(
        default(SyntaxTriviaList), 
        "newVar1", "newVar2", 
        default(SyntaxTriviaList))
        .WithAdditionalAnnotations(RenameAnnotation.Create());
    

    或使用变量声明器:

    var declarator = SyntaxFactory.VariableDeclarator("newVar1");
    declarator = declarator.ReplaceToken(
        declarator.Identifier,
        declarator.Identifier.WithAdditionalAnnotations(RenameAnnotation.Create()));
    

    【讨论】: