Os Extension Methods ou métodos de extensão são recursos disponíveis no c# a partir da versão 3, eles permitem que um tipo existente seja estendido com novos métodos sem a necessidade de se derivar ou mesmo modificar o tipo original.
Com os extension methods você pode criar métodos para um tipo mesmo que não tenha os fontes, podendo criar novos métodos para aquele tipo.
Para definir um extension method é simples, basta criar um método do tipo estático de uma classe estática, onde deve ser passado como primeiro parâmetro o modificador this.
Abaixo vamos criar um exemplo de utilização do extension method, onde vamos criar um método que retorna a quantidade de vogais em uma string.
Passo 1 – definir uma classe estática com um método estático e no mesmo vamos passar o tipo como parâmetro usando o this: