2010-05-07 12 views
7

Este es un título incorrecto para la pregunta, pero no estoy seguro de uno mejor.Espacio de nombres y conflicto de clase (?)

Tengo un espacio de nombre llamado Globals con una clase X en él. También tengo una clase llamada Globals. Cuando intento acceder a Globals.X.StaticMember, intenta acceder a la clase Globals.X y se queja de que X no existe. ¿Cómo hago referencia al espacio de nombres Globals? Es decir, :: Globals.X.StaticMember (:: no compila).

Respuesta

11

Probar global::Globals.X.StaticMember.

¡Y Globals are Evil!

+2

+1 "para Globals son malos". – OregonGhost

+5

Excepto para singletons y clases estáticas, que son esencialmente globales. –

8

Eric Lippert recientemente publicó un blog sobre él. Cuatro publicaciones de blog no menos, check it out. Comience en la primera parte.

+0

+1 Estaba a punto de vincularme con esto :) – ParmesanCodice

1

Eric Lippert tuvo recientemente una serie de entradas del blog que describen los problemas que se ejecutan en cuando se utiliza el mismo nombre para una clase y un espacio de nombres, explicando esta declaración de las Directrices de diseño de la estructura en la sección 3.4:

“hacer no use el mismo nombre para un espacio de nombres y un tipo en ese espacio de nombres ".

ver aquí para los distintos puestos:

Do not name a class the same as its namespace (Part 1, Part 2, Part 3, Part 4)

Cuestiones relacionadas