代码之家  ›  专栏  ›  技术社区  ›  Josh Sterling

是否有方法将codedom using语句放在命名空间之前

  •  17
  • Josh Sterling  · 技术社区  · 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);
    
    2 回复  |  直到 8 年前
        1
  •  22
  •   Hamid62    8 年前

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

        2
  •  8
  •   Brian    13 年前

    所以代码将与之前一样,但是添加了这个位。

    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);