El post que vamos a ver hoy esta directamente relacionado con el que vimos la semana pasada de los métodos estáticos y es que hoy vamos a ver que son los “Extension methods
” los cuales nos permiten ampliar la funcionalidad de un objeto.
1 - Qué son los Extension Methods
Por ejemplo, como recordamos del post de en el que vimos las cadenas de texto el método string posee una serie de funciones o métodos por defecto, como pueden ser .ToUpper(), .ToLower() etc.
.NET nos permite extender esa funcionalidad utilizando los extension methods
o métodos extensibles.
2 - Como crear extension methods o métodos de extensión
Para este ejemplo vamos a crear un método que nos convierta la primera letra de una palabra o frase a mayúscula.
Para ello debemos crear un método que realice esta funcionalidad.
public static string PrimeraMaysucula(string fraseInicial)
{
char primeraLetra = char.ToUpper(fraseInicial[0]);
string RestoDeFrase = fraseInicial.Substring(1);
return primeraLetra + RestoDeFrase;
}
Console.WriteLine(PrimeraMaysucula("hello world!"));
Pero como vemos en este método debemos mandar la palabra o frase como parámetro cada vez que queramos esta funcionalidad. Esta forma de programar es correcta, y válida, pero lo podemos hacer mejor. Y aquí es donde entran los extension methods
2.1 – Creación de un extension method
Como hemos indicado un extension method
nos permite extender la funcionalidad de un objeto o tipo con métodos estáticos. Con las únicas dos condiciones que son, el método tiene que ser estático y en el primer parámetro, debemos indicar la palabra clave “this”.
Utilizamos la palabra clave this en el primer parámetro para indicarle al compilador a que tipo va a extender. Por lo tanto, el método anterior, nos quedaría de la siguiente forma
public static class StringExtensions
{
public static string PrimeraMaysucula(this string fraseInicial)
{
char primeraLetra = char.ToUpper(fraseInicial[0]);
string RestoDeFrase = fraseInicial.Substring(1);
return primeraLetra + RestoDeFrase;
}
}
//Llamada
Console.WriteLine("hello world!".PrimeraMaysucula());
Como nota adicional indicar que los extension methods
se suelen colocar en clases estáticas por supuesto, pero que además su nombre hace referenica, por ejemplo, si vamos a extender el tipo string
, lo indicaremos con el nombre StringExtensions
si vamos a extender el tipo int
la llamaremos IntExtensions
Finalmente indicar que los extension methods pueden ser implementados para cualquier tipo, inclusive los creados por nosotros mismos.