Essa semana me empolguei nos Extensions Methods de C# e resolvi escrever a respeito!
Extension Methods
Os Extension Methods surgiram com o intuíto de te auxiliar na hora do desenvolvimento. Ele resolvem um problema dos grandes, permitem que você adicione métodos a tipos de dados já existentes. Evitando assim, que você tenha que criar um novo tipo.
Existe uma biblioteca muito famosa no C# que se chama LINQ no qual implementa diversos extension methods para trabalharmos com
IENumerable. Bom, mas como de costume, existem fontes mais detalhadas a respeito Extension Methods, se puder, invista uns 15 minutos lendo.
Vamos a prática? É bem simples! Criei um projetinho Class Library no Visual Studio, e adicionei algumas dependências que já estou acostumado a usar: FluentAssertions e NUnit.
Primeira classe:
public static class Ext
{
public static int Soma(this int x, int y)
{
return x + y;
}
public static string RecortarEColar(this string s, string old, string neww)
{
return s.Replace(old, neww);
}
}
E como usamos esses métodos?
public class extTest
{
[Test]
public void DeveSomar()
{
234.Soma(266).Should().Be(500);
}
[Test]
public void DeveTrocar()
{
"Extension Methods são fodas".RecortarEColar("fodas", "úteis").Should.Be("Extension Methods são úteis");
}
}
Simples de usar e entender. Mas por que os métodos são estáticos? Eles são apenas um Açucar Sintático, servem para deixar o código mais legível! Assim como o
Should().Be()... Na Real o que o compilador faz é tornar o código acima parecido com isso:
Ext.Soma(234, 266);
Ext.RecortarEColar("Extension Methods são fodas", "úteis");
E aí qual ficou mais legível, nosso código acima, ou o clássico chama a classe estática e seu método e passamos os parâmetros?
Por hoje é isso aí galera. Abraços