Uma característia presente nas linguagens de dinâmicas e que também está disponível na plataforma .NET, é a capacidade de extender uma classe sem a que seja necessário uma herança da mesma, o que seria impossível numa classe selada, que não permite que seja herdada.
Veja um exemplo em ruby (trecho retirado do artigo Micro Tutorial de Ruby – Parte I):
Veja um exemplo em ruby (trecho retirado do artigo Micro Tutorial de Ruby – Parte I):
class String def empty? self.nil? || self.size == 0 end end nome = "Sebastião Relson" nome.empty?
Veja como fica a saída do programa utilizando o IRB:
relson@lenny-amd64:~$ irb irb(main):001:0> class String irb(main):002:1> def empty? irb(main):003:2> self.nil? || self.size == 0 irb(main):004:2> end irb(main):005:1> end => nil irb(main):006:0> nome = "Sebastião Relson" => "Sebasti\303\243o Relson" irb(main):007:0> nome.empty? => false
Agora um exemplo em c# .NET:
using System;
namespace MetodosExtensao
{
class MainClass
{
public static void Main(string[] args)
{
int i = 1;
Console.WriteLine(i.Negativo());
}
}
static class ExtensoaInteiro
{
public static int Negativo(this int i)
{
return -i;
}
}
}
Nesse exemplo a saída seria somente:
-1
Para facilitar a inserção do código no blog e deixar e exemplo mais simples coloquei as classes no mesmo arquivo. O código foi retirado com adaptações do livro Microsoft Visual C# 2008, Passo a Passo - John Sharp.
Para finalizar leia também o artigo de um grande amigo meu, o memorável Rafael Camargo que fala a respeito que também fala de métodos de extensão o artigo é C#: Extension Methods & Speech.
|
Programador multi-versátil, técnico em Redes (2004) e Bacharel em Ciências da Computação (2008). Na Tribo do C.I. atua na retaguarda do site além da edição do podcast, com poucos textos publicados, veja mais no "quem somos" do site. |

Vou deixar aqui um link com outros exemplos de métodos de extensão, inclusive de como simular adição de propriedades em um enumerador, dessa forma poderiamos acessar Enum.Tipo.Descricao
http://economizandobits.blogspot.com.br/2013/02/c-criando-metodos-de-extensao.html