Csharp - Extension Methods
SOLID - Open Closed Principle (OCP)
Em C# podemos usar técnicas para expandir a capacidade de uma classe inserindo métodos de maneira indireta por meio de uma sintaxe açucarada e não composição nem herança.
namespace CustomExtensionMethods;
// antes do c# 14
public static class MyExtensions
{
public static int WordCount(this string str) =>
str.Split([' ', '.', '?'], StringSplitOptions.RemoveEmptyEntries).Length;
// depois do c# 14 temos um token para isso
extension(string str)
{
public int WordCount() =>
str.Split([' ', '.','?'],StringSplitOptions.RemoveEmptyEntries).Length;
}
}
// em ambos os casos o uso e igual
string s = "Hello Extension Methods";
int i = s.WordCount(); // veja que parece que string agora possui esse metodo