# Métodos de Extensión .NET

Los Métodos de Extensión son métodos (funciones o procedimientos) que pueden ser agregados a una clase sin necesidad de compilar nuevamente o de reemplazar los métodos originales de dicha clase. En .NET, los métodos de extensión permiten agregar nuevas funcionalidades a instancias de clases sin necesidad de compliar las clases bases.

## Implementación

Para explicar el uso de los métodos de extensión en .NET, se utilizará el lenguaje de programación Visual Basic en el entorno de desarrollo Visual Studio 2010

### Paso 1: Creación del módulo para los métodos de extensión.

Los métodos de extensión se construyen en un módulo perteneciente al proyecto en el cual serán usados. Para ello, agregamos un nuevo módulo al proyecto siguiendo estos pasos:
* En el cuadro "Explorador de Soluciones" (parte derecha de la pantalla) damos clic derecho sobre el nombre del proyecto.
* En el menú desplegable, buscamos la opción "Agregar" y en el submenú que se despliega seleccionamos "Módulo".
* En la nueva ventana que aparece, damos un nombre a nuestro módulo y luego damos clic en "Agregar".

### Paso 2: Importación de las librerías del Framework necesarias

Luego de tener nuestro módulo, se importa la siguiente librería para hacer uso de las clases del Framework que nos permiten construir los métodos de extensión para el proyecto.

### Paso 3: Construcción del método.

Un método de extensión siempre debe llevar una variable de entrada que indicará la clase en la cual se incluirá el método. Por ejemplo, si al método de extensión que creamos enviamos una variable de tipo String como entrada, entonces el método será añadido a la clase String y todas las instancias que pertenezcan a la clase podrán usar el método. Para construir el método, dentro de la región de código del módulo creamos un procedimiento antecediendolo de la instrucción <Extension> _ de la siguiente manera:
De ésta manera, se pueden implementar métodos de extensión en .NET permitiendo así agregar nuevas funcionalidades a las clases del Framework sin necesidad de compilarlas nuevamente.

### Ejemplo

En el siguiente ejemplo se creará un método de extensión para la clase TextBox que permita validar si una cadena ingresada en un control "TextBox" es numérica.
Nota: Para realizar el ejemplo, crearemos un procedimiento más que será el evento KeyPress de las cajas de texto.
¿Qué necesitamos?
* Crear un nuevo módulo dentro del proyecto.
* Importamos las librerías necesarias del Framework para construir métodos de extensión
* Creamos el método a usar
* Creamos el evento "KeyPress" (necesario en el ejemplo)
* Usamos el evento "KeyPress" en el método de extensión anclando al objeto de la variable de entrada el evento que acabamos de construir

### Código completo

Para usar el método de extensión, basta con llamarlo desde un control TextBox en cualquier formulario del proyecto de la siguiente manera: TexBox1.EsNumerico

### Conclusión

Como podemos ver, los métodos de extensión son muy útiles al momento de agregar funcionalidad a las clases de nuestros proyectos de una manera rápida y sencilla. Hay que tener en cuenta que los métodos de extensión se deben usar cuando sea necesario y no caer en el error de usarlos a todo momento sin tener claro su propósito.