Marcas Technorati: C# 3.0, Extensions Methods, Implicitly typed local variables, Linq
Artigo Principal - As Novas Funcionalidades do C# 3.0
Esta é sem dúvida umas das funcionalidade que mais gostei no C# 3.0. Com ela podemos extender tipos existentes (string, int, etc…) ou tipos construÃdos (client, car, person, etc…) com métodos adicionais. Estes métodos estáticos podem ser invocados com a mesma sintaxe que os métodos de instância.
Esta funcionalidade pode ser extremamente útil no desenvolvimento, e tornar o código muito mais limpo e reutilizável. De seguida vou mostrar um exemplo, de como podemos capitalizar as primeiras letras das palavras que constituem uma determinada string. Para isso vamo criar um Extension Method ao tipo string:
public static class IstoMesmoExtensions
{
 public static string ProperCase(this string s)
 {
   string[] words = s.Split(’ ‘);
   string result = string.Empty;
   foreach (string i in words)
   {
     result = result + i.Substring(0, 1).ToUpper() + Â
                 i.Substring(1).ToLower() + ” “;
   }
   result = result.Substring(0, result.Length - 1);
   return result;
 }
}
Os métodos têm de ser criados obriató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.
De seguida podem ver um exemplo de utilização da extensão criada:
using IstoMesmoExtensions;protected void Button1_Click(object sender, EventArgs e)
{
   Label1.Text = TextBox1.Text.ProperCase();
}
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.
Este foi um exemplo bastante simples, para mostrar no que consistem os Extension Methods, no entanto, esta é uma 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.
Era bastante interessante criar uma biblioteca com um conjunto de extensões úteis, para podermos utilizar nos nossos projectos.
Neste site já existe uma pequena biblioteca com conversões entre os vários tipos nativos do .NET.
Partilhem as vossas ideias de funções que seriam úteis no quotidiano.
Se gostaram deste artigo subscrevam a feed RSS do istomesmo, para ficarem actualizados sobre os últimos artigos.




Março 5th, 2008 at 20:34
[...] Novas Funcionalidades C# 3.0 - Extensions Methods « Isto Mesmo Esta funcionalidade pode ser extremamente útil no desenvolvimento, e tornar o código muito mais limpo e reutilizável. (tags: istomesmo.wordpress.com 2008 mes2 dia5 at_tecp extension_methods C# C#3.0 blog_post) [...]