C# | Extension Methods (Metodos de extension)

Hola....

En el dia de hoy, les hablare sobre los Extension Methods o como se dice en español Metodos de Extension.

Esta..."forma" de hacer cosas, se usa especificamente para crear de forma personalizable (por asi decirlo) metodos que necesitamos, y que el propio objeto no las tiene o se realizan de otra manera que no nos convence.

Veamos a un simple ejemplo:


Clase A


// Tenemos estos datos...
var arrayOfNumbers = new[] { 25365661178 };
const int myNumber = 66;
/* 
    Queremos saber si 'myNumber' está o existe dentro del array 'arrayOfNumbers'.
    O sea, queremos solo la respuesta SI o NO existe. (true or false)
    Normalmente esto se podria hacer asi...
*/
 
var exist = arrayOfNumbers.Where(x => x.Equals(myNumber)).Any();
// Pero para poder explicar y mostrar como funciona y se hace un Extension Methods, 
// lo podriamos hacer asi   
var exist = myNumber.IsOneOf(arrayOfNumbers);

"IsOneOf" es nuestro metodo extensivo, lo cual si nos fijamos en la clase donde se crea, podemos ver lo siguiente (ver Clase B)

Clase B (aqui creamos el/los Extension Methods)

public static class ExtensionMethod
{
    public static bool IsOneOf(this int i, params int[] values)
    {
        return values.Any(x => x.Equals(i));
    }
}

Analisis mas a fondo del extension method
public static bool IsOneOf(this int i, params int[] values)
IsOneOf : nombre del metodo
this int : 'this' hace referencia al objeto o variable en el cual le decimos que va a tener este nuevo metodo. Como es un 'this int', lo que estamos diciendo es "a todas las variables u objetos del tipo INT tendra este nuevo metodo". Asi que de esa forma, solo las variables de numeros enteros tendran este nuevo metodo.
params int[] : Aqui lo que decimos es que, éste metodo tendrá como parametro solo valores del tipo int, o sea, no le indicamos cuantos parametros tendrá, sino solo que SI tendra paramteros. O sea que puede ser llamado 
myNumber.IsOneOf(new[] { 25365661178 });
// o
myNumber.IsOneOf(25365331178);
// o
myNumber.IsOneOf(2536);
// o sea, sin importar la cantidad de parametros, solo debe cumplir que 
// sean del tipo INT
Nose si este ejemplo se adapta o es lo que buscan, pero fue solo para demostrar como crear e implementar un Extension Method de la forma simple y que sea...util.

Saludos, y nos vemos en la proxima. :)

Comments

Post a Comment

Popular posts from this blog

Javascript : preventDefault & stopPropagation

HTML5 | Drag & Drop