web-dev-qa-db-fra.com

Ajout d'un nouvel espace de noms dans le projet C #

Je souhaite ajouter un nouvel espace de noms au projet C #, ainsi qu'un nombre de classes à ajouter dans cet espace de noms récemment créé. 

Lorsque j'ai cliqué avec le bouton droit de la souris sur Solution de projet, je n'ai trouvé aucun lien pour ajouter un nouvel espace de noms, de la même manière en cliquant avec le bouton droit de la souris sur l'espace de noms Project-Named. 

  • Comment ajouter un nouvel espace de noms au projet existant? 

  • Est-il nécessaire d'avoir une classe avec la méthode principale dans chaque espace de noms?

  • Le nom du projet doit être identique au nom de l’espace de nom, puis comment ajouter New dans le même projet?

6
maliks

Avant de répondre à chacune des questions, je voulais partager ceci à partir deMSDN:

Le mot clé namespace est utilisé pour déclarer une étendue contenant un ensemble d'objets associés. Vous pouvez utiliser un espace de noms pour organiser les éléments de code et créer des types globalement uniques.

Question 1

Comment ajouter un nouvel espace de noms au projet existant?

Lorsque vous créez une classe, vous pouvez la placer dans presque tous les espaces de noms de votre choix, elle peut être entièrement composée ou déjà existante.

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

À présent, cet espace de noms Something.That.No.One.Else.Has est disponible dans l’ensemble de mon application. Et je dois utiliser l'instruction using pour pouvoir utiliser la classe FooBar, à moins que la classe consommatrice ne se trouve dans le même espace de noms.

Question 2

Est-il nécessaire d'avoir une classe avec la méthode principale dans chaque espace de noms?

Non, il n'y a pas d'exigence intégrée dans le langage qui l'imposerait. Vous pensez probablement à static void Main pour .exe.

Question 3

Le nom du projet doit être identique à celui de l’espace de nom, puis comment en ajouter de nouveau dans le même projet?

Comme je l'ai mentionné dans réponse 1, vous pouvez simplement créer un namespace comme bon vous semble. Je suggérerais que, pour des raisons d’organisation, le démarrage d’un nouveau projet soit source de confusion pour quiconque commence à travailler dans votre source.

Lorsque vous créez un nouveau projet, la convention de dénomination suivie consiste à définir l'espace de nom par défaut du projet sur le nom du projet.

Mise à jour

Après avoir entendu le PO, je pense que je comprends mieux le dilemme.

Dans votre projet, vous devez créer une structure de dossiers pertinente pour la relation entre les fichiers et leurs implémentations respectives. Suivant les recommandations pratiques et modèles de 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
|   +-- ...

Mise à jour 2

La structure de dossiers (par défaut) dicte la namespace de la classe. Par exemple, lorsque vous cliquez avec le bouton droit de la souris sur le dossier et sur Add > New Item > Class, une classe sera créée dans ce dossier, mais elle lui donnera la valeur namespace comme décrit.

8
David Pine
  • Comment ajouter un nouvel espace de noms à un projet existant? Ajoutez simplement un nouveau dossier à votre projet dans lequel vous placerez les nouvelles classes. Le nom du dossier fait alors partie de l’espace de nom: [nom du projet]. [Nom du dossier]

  • Est-il nécessaire d'avoir une classe avec la méthode principale dans chaque espace de noms? Non pas du tout.

  • Le nom du projet doit être identique à celui de l’espace de nom, puis comment en ajouter de nouveau dans le même projet? Par défaut, le nom du projet est la première partie de l'espace de noms. Les dossiers font également partie de l’espace de noms, comme suit: [nom du projet]. [Nom du répertoire]. [Nom du sous-répertoire]. [Etc]

Notez que vous pouvez toujours écraser un espace de noms pour vos classes en remplaçant simplement l'espace de noms généré par défaut:

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

En fait, je viens de rencontrer une situation comme celle-ci dans mon projet WPF. Peut-être que ce n'est pas le titre exact de ma situation, mais lorsque je l'ai cherché, je n'ai pas pu trouver de solution adéquate. J'espère que ça aide les autres,

Longue histoire courte;

J'ai créé un nouveau projet C # sous ma "solution". Et je voulais juste utiliser l’une des définitions de classe incluses dans le nouveau projet. Cependant, même si j'ajoutais l'extrait suivant à mon code .xaml, je ne pouvais pas utiliser le 'Chemin'.

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

Donc, ce que j'ai fait n'était rien d'autre que d'ajouter le projet comme référence à mon projet Leading.

0
cooleng