2010-05-04 10 views
27

El código con el que estoy trabajando tiene una clase llamada Entorno que no está en ningún espacio de nombres. Desafortunadamente, si estoy en una clase que importa el espacio de nombres Sistema, no hay forma de referirse a la clase personalizada llamada Entorno. Sé que esta fue una elección desafortunada y debería ser refactorizada, pero ¿hay alguna forma en que pueda referirme explícitamente a la clase en conflicto?se refieren explícitamente a una clase sin un espacio de nombres en C#

En C++ parece que la manera de hacer esto es mediante el uso de ::, y en Java existe algo llamado mundial :: Cómo lo hago en C#?

Respuesta

38

C# también tiene un espacio de nombres global (o no) - se puede utilizar global:: para acceder a su clase:

global::Environment 

Ver más en MSDN. También vea el operador ::.

Puede crear un alias para él también:

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

@Oded su respuesta es un poco irrelevante. La pregunta fue: "pero ¿hay alguna manera en que pueda referirme explícitamente a la clase en conflicto?" – Andrey

+4

@Andrey: el ejemplo muestra exactamente cómo _explicitly_ referirse a la clase 'Environment' que no tiene espacio de nombres. – Oded

+0

lo siento, leí mal la pregunta – Andrey

2

Debe ser global::Environment al igual que en Java

1

El código que estoy trabajando tiene una clase llamada Medio Ambiente que no está en cualquier espacio de nombres

Debe cambiar eso por completo. O si no es su código, presente un informe de error y difiera el uso hasta que se solucione el error. No usar un espacio de nombres: eso es un absoluto no-go.

(No obstante la solución de buen funcionamiento publicada por @Oded.)

+0

¿puedes justificar esta política? – Proviste

+2

@Proviste Si ese hilo no es una justificación suficiente, no podré cambiar eso. Los espacios de nombres evitan los conflictos de nombres. Eso es todo. Es una política fija en .NET, * nunca * tener una clase sin espacio de nombres. Nunca. Lo mismo vale para Java y paquetes. Los espacios de nombres solo funcionan si los usa. Si no los usa, ¿por qué apoyarlos? –

+0

gracias. Creo que es una buena forma de compartir fácilmente una clase en toda la aplicación. Entiendo que es sucio. ¿Cómo obtendría la misma ventaja manteniendo un espacio de nombres? – Proviste

Cuestiones relacionadas