2010-05-07 5 views
7

Ceci est un mauvais titre pour la question, mais je ne suis pas tout à fait sûr d'un meilleur. J'ai un espace de noms appelé globals avec une classe X dedans. J'ai aussi une classe appelée Globals. Lorsque j'essaie d'accéder à Globals.X.StaticMember, il tente d'accéder à la classe Globals.X et se plaint que X n'existe pas. Comment puis-je référencer l'espace de noms Globals - ie :: Globals.X.StaticMember (:: ne compile pas).Conflit d'espace de noms et de classe (?)

Répondre

11

Essayez global::Globals.X.StaticMember.

Et les globes sont mauvais!

+2

+1 pour "Globals sont mauvais". – OregonGhost

+5

À l'exception des singletons et des classes statiques, les deux étant essentiellement globaux. –

8

Eric Lippert a récemment blogué à ce sujet. Quatre billets de blog pas moins, check it out. Commencez à la première partie.

+0

+1 Était sur le point de lier à moi-même :) – ParmesanCodice

1

Eric Lippert a récemment une série de blogposts décrivant les problèmes que vous rencontrer lors de l'utilisation du même nom pour une classe et un espace de noms, expliquant cette déclaration des lignes directrices de conception cadre à la section 3.4:

« do n'utilise pas le même nom pour un espace de noms et un type dans cet espace de noms ".

Voir ici pour les différents postes:

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

Questions connexes