lunes, 11 de agosto de 2008

Having fun with extension methods

C# es un de los lenguajes que más rápidamente evoluciona, en la entrega 3.0 de este lenguaje existen muchas nuevas características, una de las más interesantes son los extension methods, que como su nombre indica, son extensiones a clases existentes, incluso podemos extender clases de las cuales no tenemos el código fuente,si bien es una muy buena capacidad del lenguaje hay que tener cuidado al usarla.

Aquí les voy a dejar un ejemplo que bien podría estar por ahí en alguna aplicación de facebook o en su blog o algo así. Se trata de un sencillo ejemplo de como podemos extender la clase String para obtener un nick así medio loco, como el que estilan ahorita los chavillos.

Ejemplo de nick:

"Quiero ver a Oasis en concierto"

Método alternado:

"qUiErO vEr a OaSiS eN cOnCieRtO"

Método loco:

"Qu!3r0 v3r 4 04$!$ 3n <0n<!3rt0"

Aquí el código:

Una clase que tiene dos métodos de extensión.

public static class StringExtension

    {

        public static string AlternateCase(this string text)

        {

            string resultString= "";

            for (int i = 0; i < text.Length; i++)

            {

                if (i % 2 == 0)

                    resultString += text[i].ToString().ToLower();

                else

                    resultString += text[i].ToString().ToUpper();

       

            }

            return resultString;

        }

 

        public static string GetCrazy(this string text)

        {

            string resultString = "";

            for (int i = 0; i < text.Length; i++)

            {

                String currentChar = text[i].ToString().ToLower();

                switch (currentChar)

                {

                    case "a":

                        currentChar = "4";

                        break;

                    case "b":

                        currentChar = "6";

                        break;

                    case "c":

                        currentChar = "<";

                        break;

                    case "e":

                        currentChar = "3";

                        break;

                    case "g":

                        currentChar = "9";

                        break;

                    case "i":

                        currentChar = "!";

                        break;

                    case "l":

                        currentChar = "1";

                        break;

                    case "o":

                        currentChar = "0";

                        break;

                    case "s":

                        currentChar = "$";

                        break;

                   

                }

                resultString += currentChar;

 

            }

            return resultString;

        }

    }


Y toda la magia únicamente declarando el método static y usando la palabra reservada this y después el tipo


public static string GetCrazy(this string text)


De esta manera, nuestro equipo de desarrollo puede usar nuestros métodos de extensión así.




String g = "Probando los inutiles metodos del rulas";


            MessageBox.Show(g.GetCrazy());


            MessageBox.Show(g.AlternateCase());


Espero que les ayude.


Saludos.

No hay comentarios.: