Extesion Methods
Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em uma classe externa.
No exemplo abaixo vou fazer um método de extensão chamado CamelCase, que retornorá todo o texto incluso dentro das normas do CamelCase, para aqueles que não sabem:
CamelCase é a denominação em inglês para a prática de escrever palavras compostas ou frases, onde cada palavra é iniciada com Maiúsculas e unidas sem espaços. É um padrão largamente utilizado em diversas linguagens de programação, como Java, Ruby, PHP e Python, principalmente nas definições de Classes e Objetos. Pela sua associação com tecnologia, o marketing se apropriou dessa maneira de escrever, injetando certo ar de "tecnologia" nos produtos assim nomeados: iPod, GameCube, OpenOffice.org, StarCraft, dentre outros. (Fonte)
Vamos ao exemplo
public static class ExtensionMethods
{
public static String CamelCase(this String source)
{
string[] arr = source.Split(new char[] { ' ', ',', '.', '_', '-' });
String Retorno = string.Empty;
foreach (String item in arr)
{
Retorno += item.Substring(0, 1).ToUpper() + item.Substring(1, item.Length - 1).ToLower();
}
return Retorno;
}
}
Repare que o método pode estar em qualquer classe do tipo static , o compilador ao entepretar o This na entrada dos parâmetros, reconhecerá em seguida este método como de extensão, independentemente do nome da sua classe ou namespace. Para sanar esta possivel dúvida eu gerei uma classe dento do namespace da página Default.aspx.cs, e ambos foram reconhecidos como extensão.
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
String Case = "toDo Mundo sabE quE o camEl case-tem a primeira_letra de cada nova palavra como_maíuscula e sem espaço";
int Numero = 12031202;
Response.Write(Case.CamelCase());
Response.Write(Numero.ParOuImpar());
}
}
}
public static class RobsonAlves
{
public static String ParOuImpar(this int Numero)
{
if (Numero % 2 == 0)
return "PAR";
else
return "IMPAR";
}
}
è isso ai, os métodos de extensão são bem legais e simples, vale agora ter a necessidade de usar mais esta.
Obrigado.
Posts Relacionados:
- Reflection e os Atributos Customizados
Para começarmos a falar de Reflection é imprescindivel entender melhor o conceito da “coisa”. A Reflexão permite que você conheça um objeto pelo seu tipo (Type) e dentro do seu tipo ter acesso a praticamente tudo o que o... - Atributos Customizados
Este assunto é pouco falado, até mesmo sua utilização se torna um pouco restrita. Tive algumas idéias para a utilização deste e portanto gerou um artigo. Mas o que são esses atributos? Atributos da Classe Estes atributos você encontra... - Gerando Novas Thread .Net (MultThreading)
Pois é, mas o que é uma Thread? Segundo o Wikipedia: (Fonte) Linha de execução (em inglês: Thread), é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. O suporte... - Java + RMI – Exemplo Básico
Este post de Java, esta aqui na verdade para auxiliar os alunos do Curso de Ciência da Computação, sala qual faço parte e as vezes dedico meu tempo para ajudar alguns alunos interessados! O código abaixo é quase uma... - Estrutura de Classes Instanciadas e Staticas
Neste tópico vamos falar sobre algumas particularidades da programação orientada a objetos. Todo programa possuirá suas classes e neste ambiente existirá a super-classe e a partir dela as sub-classes. Este conceito tem como foco quando falarmos de heranças entre classes....