c# – 使用Roslyn如何使用指令更新类?
发布时间:2020-12-15 06:24:35 所属栏目:百科 来源:网络整理
导读:刚刚发现罗斯林,请耐心等待. 我想更新我的类顶部的using指令以包含一个额外的语句,例如: using System;public class Foo {} 应该成为: using System;using Custom.Bar;public class Foo {} 我看到我可以覆盖SyntaxRewriter,我已经这样做来解决方法级代码,
刚刚发现罗斯林,请耐心等待.
我想更新我的类顶部的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变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |