2010-05-04 6 views
15

La documentazione di msdn dice aggiungere le importazioni di spazi dei nomi nello spazio CodeNamespace. Questo li mette dentro lo spazio dei nomi (che ha un senso, dal momento che l'aggiungendoli al namespace)C'è un modo per fare in modo che CodeDom inserisca le istruzioni prima dello spazio dei nomi

namespace Foo 
{ 
    using Bar; 

    //Code 
} 

Tuttavia il resto della nostra base di codice è utilizzando le istruzioni al di fuori dello spazio dei nomi:

using Bar; 

namespace Foo 
{ 
    //Code 
} 

Esiste un modo pulito per ottenere CodeDom per emettere la seconda versione?

Edit: il codice per produrre il primo esempio simile a questa:

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

risposta

22

Il modo più semplice è quello di aggiungere una voce namespace globale nell'unità di compilazione (namespace senza nome) e aggiungere le importazioni esso.

+2

Yup. che funzioni. Yay necro risponde! –

+0

grazie; Mi stavo chiedendo questo ... un accorato +1 per il Frankenanswer, e anche +1 per lo spiacevole necrocomment che elogiava la risposta necro. :) e + ♥♥ dato che è il momento giusto per roba spettrale di necro e Frankenthings. ;) – shelleybutterfly

6

Così il codice sarebbe la stessa di prima, ma con questo bit aggiunto.

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

il problema è che ora ho un blocco di commenti generato automaticamente all'inizio – Brian

Problemi correlati