Executando verificação de segurança...
3

Extension Members - Novidade do C# 14

Com o lançamento do C#, agora temos uma maneira mais clara e legível de definir métodos de extensão. Além disso, podemos também definir membros de extensão e métodos de extensão estáticos.

Abaixo está um exemplo de como definir métodos de extensão, membros de extensão e métodos de extensão estáticos:

static class PersonExtensions
{
    extension(Person)
    {
        // método de extensão estático para clonar o objeto person, resetando as compras
        public static Person Clone(Person person) => person with { Purchases = []};

        // exemplo de uma operação de instância como extensão
        public static Person operator +(Person basePerson, Person second) =>
            basePerson with { Purchases = [ ..basePerson.Purchases, ..second.Purchases ]};
    }
    
    extension(Person person)
    {
        // exemplo de membro de extensão
        public string FullName => $"{person.FisrtName} {person.LastName}";

        // nova forma de definir métodos de extensão
        public string GetFullName() => $"{person.FisrtName} {person.LastName}";

        // extensão definindo operadores
        public void operator += (Person toMerge) => 
            person.Purchases.AddRange(toMerge.Purchases);
    }

    // a nova abordagem também é compatível com os métodos de extensão existentes
    // ambas as abordagens podem coexistir    
    public static string GetFullNameOld(this Person person) =>
        $"{person.FisrtName} {person.LastName}";
}

E como fica a chamada?

Simples e exatamente igual a métodos e membros que não são extensões:

// chamando um método de extensão (exatamente como antes do C# 14)
person.GetFullName();

// acessando um membro de extensão
person.FullName;

// chamando um método de extensão estático
var clone = Person.Clone(person);

Espero que tenha agregado!
Para mais conteúdos sobre .Net, C#, Azure e engenharia de software avançada, se inscreva:
https://www.youtube.com/@wilsonneto-swe/videos

Carregando publicação patrocinada...