Wednesday, July 18, 2012

Extension Methods

Los Extension Methods nos permite agregar métodos a cualquier tipo u objeto en .NET.


Estos son muy útiles cuando tengamos que realizar una operación recurrente para un tipo en especifico, por ejemplo, es muy común que queramos convertir un string a número, podemos realizar una clase y que contenga la función o bien solo usando el método Parse del tipo int.


Veamos el ejemplo de convertir el número


El código tradicional es

string text = "123";
int number1 = int.Parse(cadena);
int number2 = Convert.ToInt32(cadena);


Eso es suponiendo que siempre va haber un número válido siempre, pero que pasa cuando dependemos de lo que capture el usuario, deberiamos poner una validación y si no es un número válido que nos regrese un valor por default que le especifiquemos:

(Supongamos que el método esta en una clase estatica llamada Functions)


public static int ToInteger(string text, int defaultValue)
{
     int result;


     if (!int.TryParse(text, out result)) result = defaultValue;


     return result;

}


mandamos a llamar el método:


string text = "123";
int number1 = Functions.ToInteger(text, 0);


Como todo buen programador uno busca optimizar el código y esta es otra forma de llegar al mismo resultado, convertamos este método a un método extendido



public static int ToInteger(this string text, int defaultValue)
{
     int result;


     if (!int.TryParse(text, out result)) result = defaultValue;


     return result;

}


¿Que cambio? simple, al parámetro text le antepusimos el this, con eso le indicamos que ese método se va agregar al tipo string en tiempo de ejecución, como lo llamamos?


string text = "123";
int number1 = text.ToInteger(0);


Básicamente lo mismo pero ese método que creamos ya va estar disponible para cualquier objeto de tipo string.


Puede que no le vean tanta utilidad por el momento pero creanme que con el tiempo los van a llegar a querer.


Si tienen preguntas con gusto se las respondo.



No comments:

Post a Comment