C# – Extensions Methods
Uma funcionalidade muito interessante no C#
Com ela podemos extender tipos existentes (string, int, objects, etc…), objetos da framework (TextBox, String, Datetime…) e até mesmo classes criadas (Clientes, Pagamentos..) com MÉTODOS ADICIONAIS.
Eles são métodos estáticos e podem ser invocados com a mesma sintaxe que os métodos de instância. Ou seja, é um método estático que só pode ser usado quando referenciado.
Mas oque realmente são?
Você certamente deve ter vários métodos de validação em uma classe ‘Helper’ ou até mesmo em cada objeto fazer isso manualmente (O importante é validar ^^)
Oque você usaria assim:
bool CEPIsValid = ValidatorHelper.IsValidCEP(“12312-544″);
ou: bool CEPIsValid = usuario.ValidarCep(usuario.CEP.ToString());
Seguinte, através do extension, você adicionaria estes métodos direto no tipo que deverá ser feita a validação. E ainda mais, Todos os objetos deste tipo receberá o método, ou seja, em qualquer classe, sem precisar implementar manualmente em cada uma.
Exemplo:
String meuCep = “12312-544″;
bool CEPIsValid = meuCep.ValidarCEP();
bool CEPIsValid = TextBox1.Text.ValidarCEP();
ou até mesmo:
bool CEPIsValid = “12312-544″.ValidarCEP();
Note que o método ValidarCEP foi chamado diretamente do objeto string, e todas as strings obtiveram a funcionalidade.
Perfeito!!! A solução das validações de Case!!!
E ainda melhor! Observem a facilidade da implementação ao seu sistema!
using System.Text.RegularExpressions;
namespace SeuNamespace
{
public static class Extensions
{
public static bool ValidarCEP(this string p)
{
return Regex.Replace(p, “[\\d]{5}-[\\d]{3}”, “”).Equals(“”);
}
public static string ImparOuPar(this int n)
{
return (n % 2 == 0) ? “Par” : “Impar”;
}
}
}
Lembrando, esta é uma das muitas funcionalidades do Extends Methods… Basta usar a Criatividade…
Os métodos têm de ser criados obrigatóriamente dentro de classes estáticas, e têm também eles de serem estáticos. O primeiro argumento do método define o tipo de dados a extender, como podem reparar no exemplo anterior, extendemos o tipo string. Reparem também que precisamos de utilizar a palavra reservada this como modificador do primeiro argumento do método. Os Extension Methods podem receber mais argumentos, estando apenas o primeiro reservado para o tipo de dados a extender.
A utilização é bastante simples, basta importar as extensões criadas, através do respectivo using e depois utilizar em qualquer objecto do tipo string.
Funcionalidade extremamente poderosa, que pode ser usada por exemplo para extender uma camada de acesso a dados gerada automaticamente, em que o código gerado não deve ser alterado porque pode ter de ser regerado.
Galera, espero ter ajudado neste post, é realmente muito util.
Assim que souber de noticias como esta passo aqui para compartilhar.
(Agradecimentos ao meu professor Valter por ter me comunicado sobre. Daí que resolvi pesquisar)
Obrigado galera!
Abraços!
Arquivado em: .NET, ASP.NET 3.5, C#, Tecnologia, dicas | Etiquetado: adicionando metodos as classes do .net, class, Extensions, Methods, static, validação, validar