web-dev-qa-db-de.com

Hinzufügen eines neuen Namespaces in C # Project

Ich möchte einen neuen Namespace zu einem C # -Projekt hinzufügen. In diesem neu erstellten Namespace müssen auch die Anzahl der Klassen hinzugefügt werden. 

Wenn ich mit der rechten Maustaste auf Solution of Project klickt, habe ich keinen Link zum Hinzufügen eines neuen Namespaces gefunden, ähnlich wie durch Klicken mit der rechten Maustaste auch auf Project-Named Namespace. 

  • Wie füge ich einen neuen Namespace zu einem bestehenden Projekt hinzu? 

  • Ist in jedem Namespace eine Klasse mit Main Method erforderlich?

  • Der Projektname sollte mit dem Namen des Namespaces identisch sein. Wie füge ich New in demselben Projekt hinzu?

6
maliks

Bevor ich die einzelnen Fragen beantworten wollte, wollte ich dies vonMSDNteilen:

Mit dem Schlüsselwort namespace wird ein Gültigkeitsbereich deklariert, der eine Reihe verwandter Objekte enthält. Sie können einen Namespace verwenden, um Codeelemente zu organisieren und global eindeutige Typen zu erstellen.

Frage 1

Wie füge ich einen neuen Namespace zu einem bestehenden Projekt hinzu?

Wenn Sie eine Klasse erstellen, können Sie sie in nahezu jedem gewünschten Namespace platzieren. Sie kann vollständig oder bereits vorhanden sein.

namespace Something.That.No.One.Else.Has
{
    public class FooBar() { }
}

Dieser Something.That.No.One.Else.Has-Namespace ist jetzt in meiner gesamten Anwendung verfügbar. Und ich muss die Anweisung using verwenden, um die Klasse FooBar zu verwenden, es sei denn, die verbrauchende Klasse befindet sich im gleichen Namespace.

Frage 2

Ist in jedem Namespace eine Klasse mit Main Method erforderlich?

Nein, in die Sprache gibt es keine Anforderung, die dies auferlegen würde. Sie denken wahrscheinlich an static void Main für .exe.

Frage 3

Der Projektname sollte mit dem Namen des Namespaces identisch sein. Wie kann man dann in demselben Projekt Neues hinzufügen?

Wie ich in Antwort 1 erwähnt habe, können Sie einfach eine namespace erstellen, wie Sie es für richtig halten. Ich würde jedoch aus organisatorischen Gründen vorschlagen, ein neues Projekt zu beginnen, da dies für jeden, der an Ihrer Quelle arbeitet, wahrscheinlich verwirrend ist.

Wenn Sie ein neues Projekt erstellen, wird bei der Namenskonvention der Standardnamensbereich des Projekts auf den Namen des Projekts festgelegt.

Update

Nachdem ich vom OP gehört habe, glaube ich, dass ich das Dilemma besser verstanden habe.

In Ihrem Projekt sollten Sie eine Ordnerstruktur erstellen, die für die Beziehung der Dateien und ihrer jeweiligen Implementierungen relevant ist. Befolgen Sie die empfohlenen Praktiken und Muster aus Microsoft .

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

.
+-- Graphs
|   +-- SomeGraphClass.cs // in CompanyName.Product.Graphs namespace
|   +-- ...
+-- Data
|   +-- SomeDataClass.cs  // in CompanyName.Product.Data namespace
|   +-- ...
+-- Interfaces
|   +-- IFooBar.cs        // in CompanyName.Product.Interfaces namespace
|   +-- ...

Update 2

Die Ordnerstruktur gibt (standardmäßig) die Variable namespace der Klasse vor. Wenn Sie beispielsweise mit der rechten Maustaste auf den Ordner und Add > New Item > Class klicken, wird in diesem Ordner eine Klasse erstellt, die namespace erhält jedoch wie beschrieben.

8
David Pine
  • So fügen Sie einem vorhandenen Projekt einen neuen Namensraum hinzu Fügen Sie Ihrem Projekt einfach einen neuen Ordner hinzu, in den Sie die neuen Klassen einfügen werden. Der Ordnername ist dann Teil des Namespaces: [Projektname]. [Ordnername]

  • Ist in jedem Namespace eine Klasse mit Main Method erforderlich? Nein, überhaupt nicht.

  • Der Projektname sollte mit dem Namen des Namespaces identisch sein. Wie kann man dann in demselben Projekt Neues hinzufügen? Standardmäßig ist der Projektname der erste Teil des Namespaces. Ordner sind ebenfalls Teil des Namespaces, wie folgt: [Projektname]. [Ordnername]. [Unterordner]. [Etc]

Beachten Sie, dass Sie einen Namespace für Ihre Klassen jederzeit überschreiben können, indem Sie einfach den standardmäßig generierten Namespace überschreiben:

namespace Foo.Bar
{
    public class FooBar
    {
        ...
    }
}
2
ZiNNED

Eigentlich bin ich gerade in meinem WPF-Projekt auf eine solche Situation gestoßen. Vielleicht ist dies nicht der genaue Titel für meine Situation, aber als ich danach suchte, konnte ich keine geeigneten Lösungen dafür finden. Hoffe es hilft anderen

Um es kurz zu machen;

Ich habe ein neues C # -Projekt unter meiner "Lösung" erstellt. Ich wollte nur eine der Klassendefinitionen verwenden, die im neuen Projekt enthalten war. Selbst wenn ich meinem .xaml-Code den folgenden Ausschnitt hinzufüge, konnte ich den 'Pfad' nicht verwenden.

xmlns:Path="clr-namespace:namespace;Assembly=namespace"

Was ich also getan habe, war nichts anderes als das Hinzufügen des Projekts als Referenz zu meinem Leading-Projekt.

0
cooleng