[C#01] Extension Methods

Cover Image for [C#01] Extension Methods
Helena Strada

Tópicos que você verá nesse post

  • O que são e como criar Extension Methods no C#

Contexto

No dia-a-dia, você pode se deparar com tarefas que se repetem no seu código e que poderiam estar centralizadas em um local para serem reutilizadas.

Por exemplo, você precisa remover os acentos de palavras.

input: áéíóú_àèìòù_ãõ
output: aeiou_aeiou_ao

Extension Methods

No C#, você pode criar e utilizar as Extension Methods que são métodos de extensão que nos permitem adicionar funcionalidades a um tipo no C# que podem ser reaproveitadas e ajudam na centralização.

using System.Globalization;
using System.Text;

public static class ExtensionMethods
{
    public static string unaccented(this string str)
    {
        if (null == str) return string.Empty;

        var chars = str
            .Normalize(NormalizationForm.FormD)
            .ToCharArray()
            .Where(c => CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
            .ToArray();

        return new string(chars).Normalize(NormalizationForm.FormC);
    }
}

Utilizando a extension method criada.

class Program
{
    static void Main()
    {
        var wordWithAccent = "áéíóú_àèìòù_ãõ";

        Console.WriteLine(wordWithAccent.unaccented());
    }
}
aeiou_aeiou_ao