Métodos de Extensión en C#
Los métodos de extensión en C# permiten agregar nuevas funcionalidades a tipos existentes sin modificar su código fuente ni usar herencia. Son especialmente útiles para mejorar la legibilidad y reutilizar lógica de forma elegante, y son ampliamente usados en LINQ y APIs fluidas.
Definir un método de extensión
Un método de extensión es un método estático en una clase estática, con el primer parámetro precedido por la
palabra clave this
.
public static class StringExtensions { public static bool EsNuloOVacio(this string texto) { return string.IsNullOrEmpty(texto); } }
Aquí EsNuloOVacio
se puede invocar como si fuera parte de la clase string
.
Usar un método de extensión
Una vez definido, puedes llamarlo directamente sobre instancias del tipo extendido.
string saludo = null; if (saludo.EsNuloOVacio()) { Console.WriteLine("El texto está vacío o es nulo."); }
Esto mejora la claridad del código al evitar llamadas estáticas más verbosas.
Uso en LINQ
LINQ se basa fuertemente en métodos de extensión para ofrecer una sintaxis fluida y poderosa.
var numeros = new List{ 1, 2, 3, 4, 5 }; var pares = numeros.Where(n => n % 2 == 0); foreach (var p in pares) { Console.WriteLine(p); }
Where
es un método de extensión sobre IEnumerable<T>
.
Buenas Prácticas
Usa métodos de extensión para agregar comportamiento a tipos que no puedes modificar directamente. Evita sobrecargar demasiado la API con métodos irrelevantes. Dale nombres claros y coherentes. Colócalos en namespaces apropiados para evitar colisiones innecesarias.