2010-05-04 30 views
15

msdn文檔說添加名稱空間導入到CodeNamespace.Imports集合。這使得他們的命名空間內(這是有道理的,因爲你將它們添加到命名空間)有沒有辦法讓CodeDom在命名空間之前放置語句

namespace Foo 
{ 
    using Bar; 

    //Code 
} 

但是我們的代碼庫的其餘部分已用空間外面聲明:

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

回答

22

最簡單的方法是添加一個全局命名空間進入編譯單元(命名空間沒有名字),並添加進口它。

+2

是啊。這樣可行。耶伊necro答案! – 2011-02-04 23:03:42

+0

謝謝你;我一直在想這個...對Frankenanswer來說是一個衷心的+1,對於spoooooky necrocomment讚揚necro答案也是+1。 :)和+♥♥,因爲這是幽靈般的壞東西和Frankenthings的正確時間。 ;) – shelleybutterfly 2012-10-31 07:50:49

6

因此,代碼會像以前一樣,但在添加了此位。

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

問題是,現在我有一個自動生成的評論塊在開始 – Brian 2011-04-03 19:30:34

相關問題