18

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

2 回答 2

23

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

于 2011-02-02T17:15:04.737 回答
9

因此代码将与以前相同,但添加了这一位。

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);
于 2011-04-03T19:23:35.557 回答