Extension methods en c#

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(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.

Enlace en GitHub


Soporte


2019 NetMentor.
Todos los derechos reservados.
Aviso legal | Politica privacidad | Politica de cookies