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