2010-05-04 7 views
27

Il codice con cui sto lavorando ha una classe chiamata Ambiente che non è in alcun spazio dei nomi. Sfortunatamente se sono in una classe che importa lo spazio dei nomi del sistema , non c'è modo di fare riferimento alla classe personalizzata denominata Ambiente. So che questa è stata una scelta sfortunata e dovrebbe essere soggetta a refactoring, ma esiste un modo in cui posso esplicitamente fare riferimento alla classe in conflitto?fa riferimento esplicitamente a una classe senza spazio dei nomi in C#

In C++ sembra che il modo per farlo è quello di utilizzare ::, e in Java c'è una cosa chiamata globale :: Come faccio a fare in C#?

risposta

38

C# dispone anche di uno spazio dei nomi globale (o senza nome) - è possibile utilizzare per accedere al tuo global:: classe:

global::Environment 

Vedere anche sulla MSDN. Vedi anche l'operatore ::.

È possibile creare un alias per esso pure:

using myEnv = global::Environment; 
using sysEnv = System.Environment; 
+0

@Oded la vostra risposta è un po 'irrilevante. La domanda era: "ma esiste un modo per fare esplicito riferimento alla classe in conflitto" – Andrey

+4

@Andrey - L'esempio mostra esattamente come _ esplicitamente_ si riferisce alla classe 'Environment' che non ha spazio dei nomi. – Oded

+0

scusate, ho letto erroneamente la domanda – Andrey

2

Dovrebbe essere global::Environment proprio come in Java

1

Il codice che sto lavorando con ha una classe chiamata ambiente che non è in qualsiasi spazio dei nomi

Si dovrebbe assolutamente cambiare. O se non è il tuo codice, invia una segnalazione di bug e rimanda l'utilizzo fino a quando il bug non viene corretto. Non usando uno spazio dei nomi - questo è un assoluto non-go.

(Nonostante la soluzione ben-lavoro inviato da @Oded.)

+0

puoi giustificare questa politica? – Proviste

+2

@Proviste Se quella discussione non è sufficientemente giustificata, non potrò cambiarla. Gli spazi dei nomi evitano scontri sul nome. Questo è tutto. È una politica fissa in .NET, * mai * per avere una classe senza namespace. Mai. Lo stesso vale per Java e pacchetti. I namespace funzionano solo se li usi. Se non li usi, perché supportarli del tutto? –

+0

grazie. Penso che sia un buon modo per condividere facilmente una classe in tutta l'app. Capisco che è sporco. Come otterresti lo stesso vantaggio mantenendo uno spazio dei nomi? – Proviste

Problemi correlati