Extensiones
Las extensiones en C# son una forma de agregar métodos a tipos existentes sin tener que crear un nuevo tipo derivado, recompilar o modificar el tipo original. Los métodos de extensión son métodos estáticos que se llaman como si fueran métodos de instancia en el tipo extendido. Para el código cliente escrito en C#, F# y Visual Basic, no hay diferencia aparente entre llamar a un método de extensión y los métodos definidos en un tipo.
Para crear una extensión en C#, primero debes definir una clase estática. Luego, define un método estático en la clase y agrega el modificador this
al primer parámetro del método. El primer parámetro especifica el tipo que se va a extender.
Crea una clase estática: La clase que contiene los métodos de extensión debe ser estática. Los métodos de extensión también deben ser estáticos.
public static class MiExtension
{
// Métodos de extensión aquí
}
Define métodos estáticos de extensión: Los métodos de extensión deben ser estáticos y deben tener al menos un parámetro, que representa el tipo que estás extendiendo. Usa la palabra clave this
seguida del tipo para indicar que es una extensión para ese tipo.
public static class MiExtension
{
public static void MiMetodoExtension(this string cadena)
{
// Lógica de la extensión aquí
}
}
Usa la extensión en tu código: Después de definir la extensión, puedes usarla como si fuera un método regular del tipo que estás extendiendo.
class Program
{
static void Main()
{
string miCadena = "Hola, mundo!";
miCadena.MiMetodoExtension();
}
}
Aquí hay un ejemplo de cómo crear una extensión para la clase string
:
public static class StringExtensions
{
public static string Reverse(this string str)
{
char[] charArray = str.ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}
}
En este ejemplo, hemos creado una extensión para la clase string
que invierte el orden de los caracteres en una cadena. La extensión se llama Reverse
y se puede llamar en cualquier instancia de la clase string
.
Aquí hay otro ejemplo que muestra cómo usar una extensión para agregar un método a la clase int
:
public static class IntExtensions
{
public static bool IsEven(this int number)
{
return number % 2 == 0;
}
}
En este ejemplo, hemos creado una extensión para la clase int
que determina si un número es par. La extensión se llama IsEven
y se puede llamar en cualquier instancia de la clase int
.