刚刚发现罗斯林,请耐心等待.
我想更新我的类顶部的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();
解决方法
要创建SyntaxNodes,必须在Syntax.UsingDirective方法中使用Syntax类工厂方法.
if (compilationUnitSyntax != null) { var name = Syntax.QualifiedName(Syntax.IdentifierName("Custom"),Syntax.IdentifierName("Bar")); compilationUnitSyntax = compilationUnitSyntax .AddUsings(Syntax.UsingDirective(name).NormalizeWhitespace()); }
注意:由于CompilationUnitSyntax的不变性,您需要使用AddUsings调用的结果重新分配compilationUnitSyntax变量.