C#.NET un espace de nom n'existe pas dans l'espace de noms d'erreur uniquement lorsque l'aide est en dehors de l'espace de noms local de la directive - pourquoi?
À l'aide .NET 2.0, C#, Windows Forms développement, Bibliothèque d'Entreprise 3.1.
Nous avons un projet d'espace de noms (appel de Projet informatique). Nous disposons également de plusieurs sous-espaces de noms à l'intérieur de ce projet, par exemple Projet de.Namespace1, Projet.Namespace2, etc.
Dans une classe, nous définissons les énumérations pour être utilisé avec la Bibliothèque d'Entreprise de Journalisation bloc, comme ceci:
namespace Project.Logging
{
public static class Logging
{
public enum LogPriority
{
//enum values here
}
}
}
Dans une autre classe, j'utilise les valeurs enum j'ai donc besoin de déclarer à l'aide d'instruction. Même projet, donc il n'y a pas d'assemblée de référence, à droite?
Si je déclare les utiliser à l'intérieur de l'espace de noms local, comme ça, ça fonctionne très bien:
namespace Project.SomeName
{
using Project.Logging;
//code referencing the Logging enum
}
Cependant, si je mets de l'instruction à l'aide à l'extérieur de l'espace de noms local de la déclaration, j'ai le "type ou le nom d'espace de noms 'LogPriority" n'existe pas dans l'espace de noms " du Projet.Journalisation'... Comme ceci:
using Project.Logging;
namespace Project.SomeName
{
//code referencing the Logging.LogPriority.whatever
}
Pourquoi est-ce? Quelqu'un a couru à travers ce avant?
OriginalL'auteur DaveN59 | 2009-11-19
Vous devez vous connecter pour publier un commentaire.
J'ai couru dans un semblable (mais pas exactement le même) les problèmes avant lors de l'utilisation d'une classe qui a le même nom que son espace de noms.
Curieusement, il semblait à la compilation ok sur certains développeurs pc mais pas sur d'autres. En fin de compte nous avons fait en sorte qu'aucun espace de noms figurant une classe du même nom.
En gros, ne pas le nom de la classe la même chose que l'espace de noms, il en, le problème disparaît.
OriginalL'auteur dice
J'ai aussi eu un filaire erreur. Je ne trouve pas de tout espace qui est à venir à partir d'assemblages différents, mais commence avec l'exécution de nom de l'assembly.
Enfin, j'ai découvert que j'ai fixé l'objectif-cadre .NET framework client profile.
OriginalL'auteur srisanju
Oui, vous avez probablement une rare valeur définie pour l' "espace de Noms par Défaut" dans les propriétés de votre projet. Je voudrais valider la configuration du projet.
qui downvotes légitime réponses?
OriginalL'auteur Mitchel Sellers
Nous sommes tombés sur cette question avant et tout est descendu à ambiguë de nommage de l'espace de noms et le nom de la classe.
Lorsque nous avons essayé d'avoir notre espace de
Services.Web.xxx
et également ajouter une référence de service commeServices.Web.xxxx
et d'y ajouter une référence à une assemblée qui a été nomméServices.Web.xxx
vous ne pouvez imaginer les problèmes que nous avons rencontré.À la fin pour fixer il nous a simplement fait un changement de nom pour s'assurer qu'il n'y a qu'une seule instance de la
Services
préfixeAussi, vous pouvez faire ce qui suit et de créer un alias pour LogPriority à LogEnum:
OriginalL'auteur Mark Coleman
Il peut certainement faire une différence si vous avez de l'usage à l'intérieur ou à l'extérieur de l'espace de noms. Il y a une bonne discussion ici, et il est susceptible d'être lié à votre espace de noms par défaut des paramètres.
Cette réponse ne mentionne pas qu'à l'origine, le problème a été causé par une classe ayant le même nom que son espace de noms.
OriginalL'auteur Otávio Décio