刚刚发现罗斯林,请耐心等待.
我想更新我的类顶部的using指令以包含一个额外的语句,例如:
using System;
public class Foo {
}
Run Code Online (Sandbox Code Playgroud)
应该成为:
using System;
using Custom.Bar;
public class Foo {
}
Run Code Online (Sandbox Code Playgroud)
我看到我可以覆盖SyntaxRewriter
,我已经这样做来解决方法级代码,但我看不到可能让我访问这些使用指令的覆盖?
谢谢.
编辑:
我找到了这个属性,但我不知道如何修改它.
var tree = document.GetSyntaxTree().GetRoot() as SyntaxNode;
var compilationUnitSyntax = (CompilationUnitSyntax) (tree);
if (compilationUnitSyntax != null)
compilationUnitSyntax.Usings.Add();
Run Code Online (Sandbox Code Playgroud)
不幸的是,UsingDirectiveSyntax是内部的,所以如何添加一个!:d
nem*_*esv 15
要创建SyntaxNodes
,必须在Syntax
方法中使用类工厂方法Syntax.UsingDirective
.
你可以用AddUsings
类似的方法添加一个新的使用
if (compilationUnitSyntax != null)
{
var name = Syntax.QualifiedName(Syntax.IdentifierName("Custom"),
Syntax.IdentifierName("Bar"));
compilationUnitSyntax = compilationUnitSyntax
.AddUsings(Syntax.UsingDirective(name).NormalizeWhitespace());
}
Run Code Online (Sandbox Code Playgroud)
注意:由于CompilationUnitSyntax
您的不变性,您需要compilationUnitSyntax
使用AddUsings
调用结果重新分配变量.
归档时间: |
|
查看次数: |
1898 次 |
最近记录: |