Un método de extensión básicamente lo que permite hacer es añadir funcionalidades a clases ya existentes sin tener que utilizar herencia, ni nada semejante.

Un método de extensión debe ser necesariamente un método (sub) o una función (function), y debe ser creado dentro de un módulo. El método de extensión debe ser decorado con el atributo y para que este pueda ser utilizado se debe importar el namespace System.Runtime.CompilerServices.

Ahora para hacer un pequeño demo vamos a crear un método de extensión que tome un string y lo devuela en formato (para el ejemplo vamos a suponer que la cadena enviada siempre será numérica).

El método que creamos estará disponibles para el tipo de dato que le enviemos como primer parámetro a la función.

Entonces lo primero que debemos hacer es añadir un modulo, y dentro de ese modulo declaramos el método de extensión así:

1: 2: PublicFunction FormatoMoneda(ByVal sCadena AsString) AsString 3: Return Val(sCadena).ToString("$##,##0") 4: End Function

Como ven es una función muy sencilla que simplemente le da el formato deseado, y ahora cuando utilicemos un valor de tipo string y le demos . vamos a tener disponible la función formato moneda. Para verificar el ejemplo vamos a tener una aplicación Windows form (para que sea sencillo) con dos cajas de texto y un botón, y al idea es que cuando se de clic en el botón el número introducido en el primer textbox aparezca en el segundo pero con el formato deseado, así que el código del botón seria:

1: txtFormato.Text = txtOriginal.Text.FormatoMoneda()

Y una vez ejecutemos la aplicación tendremos algo como:

Imagen1

Espero les sea de utilidad.