Namespaces y ensamblados en C#
Aprende los conceptos de namespaces y ensamblados en C# para organizar el código y gestionar dependencias correctamente.
En el mundo de C# y .NET se utilizan los conceptos de namespace (espacio de nombres) y assembly (ensamblado) para que el código sea organizado, manejable y reutilizable. Estas estructuras permiten dividir el código, evitar conflictos de nombres y facilitar el uso compartido de componentes, incluso en proyectos grandes.
Namespace (Espacio de nombres)
Un namespace agrupa clases, interfaces, enumeraciones y otros tipos dentro de una unidad lógica. De esta manera, clases con el mismo nombre pueden usarse sin conflicto si están en diferentes espacios de nombres.
namespace ProyectoA.Models
{
class Usuario
{
public string Nombre { get; set; }
}
}
namespace ProyectoB.Models
{
class Usuario
{
public string NombreCompleto { get; set; }
}
}
En este ejemplo existen dos clases Usuario diferentes.
Al usar namespaces, se puede acceder a ellas como
ProyectoA.Models.Usuario o ProyectoB.Models.Usuario.
Instrucción using
La instrucción using permite acceder directamente a los tipos definidos dentro de un espacio de nombres específico.
using ProyectoA.Models;
class Program
{
static void Main()
{
Usuario u = new Usuario();
u.Nombre = "Juan";
Console.WriteLine(u.Nombre);
}
}
Aquí, en lugar de escribir ProyectoA.Models.Usuario,
simplemente se puede escribir Usuario.
Assembly (Ensamblado)
Un ensamblado es la unidad distribuible del código .NET compilado.
Generalmente tiene la extensión .dll (Dynamic Link Library) o .exe (ejecutable).
- DLL: No puede ejecutarse por sí solo, es referenciado por otros proyectos.
- EXE: Aplicaciones ejecutables, normalmente contienen un punto de entrada (
Main).
Contenido de un Assembly
Un ensamblado no solo contiene código, sino también metadatos (por ejemplo, información de versión) y archivos de recursos.
- Manifest: Define la identidad del ensamblado (nombre, versión, cultura).
- Código MSIL: Código intermedio compilado.
- Metadatos: Información sobre clases, métodos y propiedades.
- Recursos: Archivos adicionales como imágenes, íconos, XML, etc.
TL;DR
- Namespace: Organiza el código en grupos lógicos.
- Assembly: Unidad distribuible del código compilado (.dll, .exe).
- Namespace → evita conflictos de nombres y aporta estructura.
- Assembly → agrupa código, metadatos y recursos en un solo paquete.