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
"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)
Analisis mas a fondo del extension method
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
Saludos, y nos vemos en la proxima. :)
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[] { 25, 36, 5, 66, 11, 78 }; 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 metodothis 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[] { 25, 36, 5, 66, 11, 78 }); // o myNumber.IsOneOf(25, 36, 5, 33, 11, 78); // o myNumber.IsOneOf(25, 36); // o sea, sin importar la cantidad de parametros, solo debe cumplir que // sean del tipo INTNose 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. :)
great example..!! congratulations !!. I love it.
ReplyDelete