miércoles, 16 de septiembre de 2009

Métodos de Extensión

Los métodos de extensión constituyen un tipo especial de método estático, pero se les llama como si se tratasen de métodos de instancia en el tipo extendido.
Para comenzar creamos un proyecto de consola C#, al cual llamaremos MetodoDeExtension:

 
Luego añadiremos una clase para crear un método, a la cual llamaremos metodo de MetodoDeExtension1:
  
Una vez creada la clase escribiremos el siguiente código en ella:
public static int ContadorDePalabras (this String texto)
           {
            return texto.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
           }
          

El método recibe por parámetro un texto y retorna la cantidad de palabras que contiene el mismo.
Luego de crear el método iremos al programa principal y escribiremos el siguiente código:
            string texto = "Mis métodos de extension. Contador de palabras.";
            int i = texto.ContadorDePalabras();
            Console.WriteLine(texto);
            Console.WriteLine("El texto contiene " + i + " palabras.");
            Console.ReadLine();
           

En la primer línea declaramos el texto, en la segunda línea llamamos al método, en la tercer y cuarta línea imprimimos en pantalla el texto y el resultado del método respectivamente.
Cuando corremos el proyecto obtendremos lo siguiente:
Otro ejemplo es crear un método que se encargue de hacer todo sin paso de parámetros, es decir, añadimos una clase nuevamente a la cual llamaremos MetodoDeExtension2 y dento de ella escribiremos el siguiente código:
 public static void OrdenarEnteros()
        {       
        int[] enteros = { 10, 45, 15, 39, 21, 26 };       
        Console.WriteLine(" ");       
            foreach (var i in enteros)
            {
                System.Console.Write(i + " ");
            }
        var result = enteros.OrderBy(g => g);       
        Console.WriteLine(" ");
        Console.WriteLine("Ordenamos la lista de enteros.");
        Console.WriteLine(" ");
        foreach (var i in result)
            {
                System.Console.Write(i + " ");
            }
        }


Luego en el programa principal escribimos el siguiente código para llamar al método:
        MetodoDeExtension2.OrdenarEnteros();
Por lo que el código del programa principal nos quedaría:
namespace MetodosDeExtension
{
    class Program
    {
        static void Main(string[] args)
        {
            string texto = "Mis métodos de extension. Contador de palabras.";
            int i = texto.ContadorDePalabras();
            Console.WriteLine(texto);
            Console.WriteLine("El texto contiene " + i + " palabras.");
            MetodoDeExtension2.OrdenarEnteros();
            Console.ReadLine();        
        }
    }
}

Cuando corremos el proyecto obtendremos:
 
En el último método estamos utilizando expresión lambda (g => g) e inferencia de datos (var result), estos temas serán tratados próximamente.

De esta manera podemos ver dos formas de como trabajar con métodos de extensión.

No hay comentarios:

Publicar un comentario