Espaces de noms et assemblies en C#
Apprenez les concepts de namespaces et d’assemblies en C# pour structurer le code et gérer efficacement les dépendances.
Dans le monde de C# et .NET, les concepts de namespace (espace de noms) et d’assembly (assembly/fichier compilé) sont utilisés pour rendre le code organisé, gérable et réutilisable. Ces structures permettent de diviser le code, d’éviter les conflits de noms et de faciliter le partage des composants, même dans de grands projets.
Namespace (Espace de noms)
Un namespace regroupe des classes, interfaces, énumérations et autres types dans une unité logique. Ainsi, des classes portant le même nom peuvent être utilisées sans conflit si elles se trouvent dans des espaces de noms différents.
namespace ProjetA.Models
{
class Utilisateur
{
public string Nom { get; set; }
}
}
namespace ProjetB.Models
{
class Utilisateur
{
public string NomComplet { get; set; }
}
}
Dans cet exemple, il existe deux classes Utilisateur différentes.
Avec les namespaces, on y accède sous la forme
ProjetA.Models.Utilisateur ou ProjetB.Models.Utilisateur.
Instruction using
L’instruction using permet d’accéder directement aux types définis dans un espace de noms spécifique.
using ProjetA.Models;
class Program
{
static void Main()
{
Utilisateur u = new Utilisateur();
u.Nom = "Jean";
Console.WriteLine(u.Nom);
}
}
Ici, au lieu d’écrire ProjetA.Models.Utilisateur,
il suffit d’écrire Utilisateur.
Assembly
Un assembly est l’unité distribuable du code .NET compilé.
Il possède généralement l’extension .dll (Dynamic Link Library) ou .exe (exécutable).
- DLL : Ne peut pas s’exécuter seul, il est référencé par d’autres projets.
- EXE : Applications exécutables, contenant généralement un point d’entrée (
Main).
Contenu d’un Assembly
Un assembly contient non seulement du code, mais aussi des métadonnées (par ex. informations de version) et des fichiers de ressources.
- Manifest : Définit l’identité de l’assembly (nom, version, culture).
- Code MSIL : Code intermédiaire compilé.
- Métadonnées : Informations sur les classes, méthodes et propriétés.
- Ressources : Fichiers supplémentaires comme images, icônes, XML, etc.
TL;DR
- Namespace : Organise le code en groupes logiques.
- Assembly : Unité distribuable du code compilé (.dll, .exe).
- Namespace → évite les conflits de noms et apporte de la structure.
- Assembly → regroupe le code, les métadonnées et les ressources dans un seul paquet.