Namespaces dans librairie

Signaler
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Bonjour,
je m'interroge sur l'utilité des namespaces dans les librairies.
Prenons par exemple une librairie MyLibrary. Dans un fichier ClassesType1.cs, j'ai :

namespace ClassesType1
{
    class Class1
    {
    }
    class Class2

    {

    }
    ...
}

Pourquoi ne pas écrire simplement :

class Class1
{
}
class Class2
{
}
...

L'avantage que je vois dans cette simplification d'écriture est que une fois la librairie liée dans un projet (MyLibrary.dll ajouté comme référence), on n'a plus à préciser using ClassesType1 dans le projet. On peut directement utiliser les classes dans celui-ci. Y a t-il des inconvénient à faire celà ? Si non quelle est alors l'utilité des namespaces ?
Mathmax

11 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
52
Salut,
Comment tu fais si t'as deux classes qui ont le même non, si la notion de namespace n'existe pas ?
Et voilà 

<hr size="2" />VC# forever
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
un exemple bête... pour rejoindre la réponse de Bidou...

imagine que tu es envie de créer un object Button... tu fais comment pou le nommer... Button existe déjà dans le framework.

bref, les namespaces permettent d'une d'éviter les doublons, et d'autres par de mettre dans des catégories les classes qu'elles contiennent. Ainsi, la classe DNS ne se retrouve pas avec la classe ListView.

Séb

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

Merci pour vos réponse. Je n'avais pas pensé au risque de doublons. Pour regrouper les classes selon leurs fonctions, je mettais dans des fichiers différents : un fichier xml.cs pour les classes ayant un rapport avec le xml, un fichier web.cs pour celle ayant à voir avec le web...
Ce qui serait bien, c'est si l'on pouvait importer dans un projet seulement un namespace de la librairie et non la librairie toute entière. Par exmple importer MyLibrary.ClassesType1.dll et eviter ainsi de préciser using ClassesType1. Est-ce possible ?

Mathmax
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
rien ne t'empêche de te créer une assembly par namespace...






Sébastien FERRAND
(

blog
)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

et comment faire ?

Mathmax
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
bah... simple...
un projet par assembly ;)

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
52
En mettant un seul namespace par assembly! pardis

<hr size="2" />VC# forever
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
t'as mangé du tigre Bidou ce soir

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
52
Non lol

<hr size="2" />VC# forever
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

Ok. Encore une petite question si vous voulez bien : Préférez-vous créer une librairie qui rassemble toutes vos classes générales (en les séparant éventuellement par des namespaces) ou regrouper vos classes en plusieurs librairies contenant chacune un namespace ?
J'ai peur qu'avec la première solution que, une fois compilé, le projet utilisant la librairie ne soit finalement alourdit inutilement avec des classes qu'il n'utilise pas. Le compilateur compile t-il aussi les classes non utilisées ?

Mathmax
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
52
Ben moi je fais une libraire qui doit contenir tout ce qu'elle doit, 20 namespaces s'il le faut. Mais en tout cas, ça reste UN projet que tu peux ajouter dans une solution pour debugger ou juste référencer si c'est pour l'utiliser...
Je ne sais pas comment être plus clair ??!

<hr size="2" />VC# forever