Neste artigo vou mostrar como podemos criar novos métodos para classes já existentes.
Veja o exemplo abaixo:
int id = Request.QueryString["id"].ToInt();
O método ToInt() não existe na classe System.String, bem como o ToMoney(), no exemplo abaixo, não existe na classe System.Double.
double d = 10.5;
Response.Write(d.ToMoney());
Para que estes métodos existam nas respectivas classes, vamos criar uma classe de extensões.
Abaixo dois exemplos de extensões de classes, o primeiro estende a classe System.String, que passará a ter um novo método, o ToInt().
No segundo, vamos estender a classe System.Double, que passará a ter o método ToMoney().
/App_Code/Extend.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Globalization;
//Esta classe deve ser "public static".
public static class Extend
{
#region ToInt
//Criando o método "public static" para converter para int.
//Usamos "this" para que passe seu valor como parametro.
public static int ToInt(this string input)
{
//Valor default
int _int = 0;
//Usando o TryParse, caso seja um número válido
//_int = input, se não, _int = 0
//Ou seja, este método sempre retornará um inteiro
int.TryParse(input, out _int);
return _int;
}
#endregion
#region ToMoney
//Criando o método "public static" para converter para moeda (string).
//Usamos "this" para que passe seu valor como parametro.
public static string ToMoney(this double input)
{
//Usando Globalization para converter para Reais
return input.ToString("C", new CultureInfo("pt-BR"));
}
#endregion
}
Este é um exemplo simples, apenas para entendimento.
Mas a partir disso, podemos criar muitas extensões que podem facilitar e agilizar o processo de desenvolvimento.