c# – 使用Roslyn如何使用指令更新类?

前端之家收集整理的这篇文章主要介绍了c# – 使用Roslyn如何使用指令更新类?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
刚刚发现罗斯林,请耐心等待.

我想更新我的类顶部的using指令以包含一个额外的语句,例如:

using System;

public class Foo {

}

应该成为:

using System;
using Custom.Bar;

public class Foo {

}

我看到我可以覆盖SyntaxRewriter,我已经这样做来解决方法代码,但是我看不到可能让我访问这些using指令的覆盖?

谢谢.

编辑:

我找到了这个属性,但我不知道如何修改它.

var tree = document.GetSyntaxTree().GetRoot() as SyntaxNode;

var compilationUnitSyntax = (CompilationUnitSyntax) (tree);

if (compilationUnitSyntax != null)
      compilationUnitSyntax.Usings.Add();

不幸的是,UsingDirectiveSyntax是内部的,所以如何添加一个! :d

解决方法

要创建SyntaxNodes,必须在Syntax.UsingDirective方法中使用Syntax类工厂方法.

您可以使用AddUsings方法添加新的使用方法

if (compilationUnitSyntax != null)
{
    var name = Syntax.QualifiedName(Syntax.IdentifierName("Custom"),Syntax.IdentifierName("Bar"));
    compilationUnitSyntax = compilationUnitSyntax
        .AddUsings(Syntax.UsingDirective(name).NormalizeWhitespace());
}

注意:由于CompilationUnitSyntax的不变性,您需要使用AddUsings调用的结果重新分配compilationUnitSyntax变量.

原文链接:https://www.f2er.com/csharp/95695.html

猜你在找的C#相关文章