【问题标题】:Is there a way to have CodeDom put using statements before the namespace有没有办法让 CodeDom 在命名空间之前放置 using 语句
【发布时间】:2010-05-04 13:43:14
【问题描述】:

msdn 文档说将命名空间导入添加到 CodeNamespace.Imports 集合。这会将它们放在命名空间中(这是有道理的,因为您将它们添加到命名空间中)

namespace Foo
{
  using Bar;

  //Code
}

但是我们的代码库的其余部分在命名空间之外有 using 语句:

using Bar;

namespace Foo
{
  //Code
}

有没有一种干净的方法可以让 CodeDom 发出第二个版本?

编辑:生成第一个示例的代码如下所示:

CodeNamespace ns = new CodeNamespace("Foo");
ns.Imports.Add(new CodenamespaceImport("Bar"));
CodeCompileUnit cu = new CodeCompileUnit();
cu.Namespaces.Add(ns);
new CSharpCodeProvider().GenerateCodeFromCompileUnit(cu, Console.Out, null);

【问题讨论】:

    标签: c# .net codedom


    【解决方案1】:

    最简单的方法是在编译单元中添加一个全局命名空间条目(没有名称的命名空间)并将导入添加到其中。

    【讨论】:

    • 谢谢;我一直在想这个……对 Frankenanswer 表示衷心的 +1,对于赞美 necro 答案的幽灵般的 necrocomment 也 +1。 :) 和 +♥♥ 因为现在是制作怪异的 necro 和 Frankenthings 的好时机。 ;)
    【解决方案2】:

    所以代码会和以前一样,只是添加了这一点。

    CodeNamespace globalNamespace = new CodeNamespace();
    globalNamespace.Imports.Add(new CodeNamespaceImport("Foo"));
    
    // globalNamespace.Comments = string.Empty;    you cannot do this
    ccu.Namespaces.Add(globalNamespace);
    ccu.Namespaces.Add(ns);
    

    【讨论】:

    • 问题是我在开头有一个自动生成的评论块
    猜你喜欢
    • 2012-09-20
    • 2011-07-06
    • 2011-04-13
    • 1970-01-01
    • 2010-10-22
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    相关资源
    最近更新 更多