18

msdn のドキュメントには、名前空間のインポートを CodeNamespace.Imports コレクションに追加すると書かれています。これにより、名前空間内に配置されます(名前空間に追加するので、これは理にかなっています)

namespace Foo
{
  using Bar;

  //Code
}

ただし、コード ベースの残りの部分には、名前空間の外に using ステートメントがあります。

using Bar;

namespace Foo
{
  //Code
}

CodeDom に 2 番目のバージョンを発行させるクリーンな方法はありますか?

編集: 最初の例を生成するコードは次のようになります。

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 に答える