C#.NET Namespace-name existiert nicht in der namespace-Fehler - nur bei Verwendung außerhalb der lokalen namespace-Direktive - warum?
Verwenden .NET 2.0, C#, Windows Forms-Entwicklung, Enterprise Library 3.1.
Haben wir ein Projekt-namespace (nennen wir es Projekt). Wir haben auch mehrere sub-namespaces innerhalb des Projekts, zum Beispiel Projekt.Namespace1, Projekt.Namespace2, etc.
In einer Klasse, wir definieren, enums und solche für die Verwendung mit der Enterprise Library Logging-block, wie:
namespace Project.Logging
{
public static class Logging
{
public enum LogPriority
{
//enum values here
}
}
}
In eine andere Klasse, ich benutze die enum-Werte, so muss ich erklären, eine using-Anweisung. Demselben Projekt, so gibt es keine assembly zu verweisen, richtig?
Wenn ich erkläre das mit der lokalen Namensraum, wie dies, funktioniert es einwandfrei:
namespace Project.SomeName
{
using Project.Logging;
//code referencing the Logging enum
}
Jedoch, wenn ich die using-Anweisung außerhalb der lokalen namespace-Deklaration, bekomme ich die "der Typ oder namespace-name 'LogPriority' existiert nicht im namespace " Projekt.Logging'... so Wie hier:
using Project.Logging;
namespace Project.SomeName
{
//code referencing the Logging.LogPriority.whatever
}
Warum ist das so? Hat jemand laufen über diese vor?
InformationsquelleAutor DaveN59 | 2009-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe laufen in ähnliche (wenn auch nicht genau die gleichen) Probleme vor, wenn die Verwendung einer Klasse, die den gleichen Namen wie der namespace.
Seltsamerweise schien es zu kompilieren ok auf einige Entwickler-pc ' s, aber nicht auf andere. Am Ende haben wir sicher gestellt, dass kein namespace enthalten eine Klasse mit dem gleichen Namen.
Im Grunde genommen, nicht den Namen einer Klasse, in der der gleiche wie der Namensraum, in, dann verschwindet das problem.
InformationsquelleAutor dice
Hatte ich auch eine WLAN-Fehler. Ich finde keine namespace, die aus verschiedenen Baugruppen, sondern beginnt mit der Ausführung von Montage-name.
Schließlich fand ich heraus, dass ich das Ziel-framework auf .NET framework client profile.
InformationsquelleAutor srisanju
Ja, haben Sie wahrscheinlich ein ungewöhnlicher Wert für den "Default Namespace" in Ihrem Projekt Eigenschaften. Ich würde überprüfen Sie die Projekt-Konfiguration.
die downvotes echt Antworten?
InformationsquelleAutor Mitchel Sellers
Liefen wir in dieser Ausgabe vor, und es ging alles nach unten, um mehrdeutige Benennung des namespace und der name der Klasse.
Wenn wir versucht haben, unsere namespace als
Services.Web.xxx
und fügen Sie auch in eine service-Referenz alsServices.Web.xxxx
und AUCH einen Verweis auf ein assembly, benannt wurdeServices.Web.xxx
Sie kann sich nur vorstellen, die Probleme, die wir hatten.In das Ende, um es zu beheben, wir hatten einfach umbenennen, um sicherzustellen, dass es nur eine Instanz der
Services
PräfixAußerdem könnten Sie die folgenden Schritte aus und erstellen Sie einen alias für LogPriority zu LogEnum:
InformationsquelleAutor Mark Coleman
Es kann definitiv einen Unterschied machen, wenn Sie noch aufzuhalten der Benutzung innerhalb oder außerhalb der namespace. Es gibt eine gute Diskussion hier, und es ist wahrscheinlich zu sein in Bezug auf Ihre default-namespace-Einstellungen.
Diese Antwort muss nicht erwähnen, dass das ursprüngliche problem wurde verursacht durch eine Klasse mit demselben Namen wie der namespace.
InformationsquelleAutor Otávio Décio