Métodos de extensão C#
Postado em : 04/12/2019
Métodos de extensão (Extensions methods), como o nome sugere, são métodos adicionais. Os métodos de extensão permitem injetar métodos adicionais sem modificar, derivar ou recompilar a classe, estrutura ou interface original. Com os métodos você pode personalizar suas classe ou atributos implementando procedimentos que não existem.
No exemplo a seguir, MaiorQue() é um método de extensão para o tipo int, que retorna true se o valor da variável int for maior que o parâmetro inteiro fornecido.
Exemplo: Método de Extensão
int i = 10; bool result = i.MaiorQue(100); //returns false
O método MaiorQue()
não é um método do tipo de dados int, inteiro (estrutura Int32). É um método de extensão escrito pelo programador para o tipo de dados int. O método MaiorQue()
estará disponível em todo o aplicativo, sempre que você invocar métodos para um int, inteiro e o(s) parâmetros necessários.
Os métodos de extensão possuem um símbolo especial no intellisense do visual studio, para que você possa diferenciar facilmente entre métodos de classe e métodos de extensão.
Agora vamos entender como se escreve um métodos de extensão.
Um método de extensão é realmente um tipo especial de método estático definido em uma classe estática. Para definir um método de extensão, primeiro defina uma classe estática.
Exemplo: Criar uma classe para métodos de extensão
namespace ExtensionMethods { public static class IntExtensions { } }
Agora, defina um método estático como um método de extensão em que o primeiro parâmetro do método de extensão especifique o tipo no qual o método de extensão é aplicável. Vamos usar esse método de extensão no tipo int, inteiro. Portanto, o primeiro parâmetro deve ser int precedido pelo modificador this.
Exemplo: Definir um Método de Extensão
namespace ExtensionMethods { public static class IntExtensions { public static Boolean MaiorQue(this int valor, int referencia) { return (referencia > valor) ? true : false; } } }
Agora, podemos incluir o método de extensão onde quisermos.
Exemplo: método de extensão
using ExtensionMethods; class Program { static void Main(string[] args) { int i = 10; bool result = i.MaiorQue(100); Console.WriteLine(result); } }
Nota
-
A única diferença entre um método estático regular e um método de extensão é que o primeiro parâmetro do método de extensão especifica o tipo em que ele vai operar, precedido pela palavra-chave this.
-
Métodos de extensão são métodos personalizados adicionais que originalmente não foram incluídos na classe.
- Os métodos de extensão podem ser adicionados a classes, estruturas ou estruturas personalizadas, .NET Framework ou de terceiros.
- O primeiro parâmetro do método de extensão deve ser do tipo ao qual o método de extensão é aplicável, precedido pela palavra-chave this.
- Os métodos de extensão podem ser usados em qualquer lugar do aplicativo, incluindo o espaço para nome do método de extensão.
Classe com Métodos de Extensão
Agora que você já sabe como funcionam os métodos de extensão, de uma olhada em nossa Classe com Métodos de extensão prontos para seu projeto.
Links Relacionados
- Arquitetura CQRS
- Arrays em C#(CSharp)
- C#(CSharp) Converter inteiro para Hexadecimal e Hexadecimal para Inteiro
- C#(CSharp) Exemplo de Conversão de um List<> de uma classe qualquer para um DataTable.
- C#(CSharp) Função para verificar se um determinado número é Primo
- Calcular Idade C# (CSharp), diferença anos entre duas datas
- Classe com Métodos de extensão C# (CSharp)
- Classe para Ler e Gravar Cookies - Asp.Net MVC 4 com C# (CSharp)
- Classe para tratar valores nulos vindos de nossa Query SQL, C#(CSharp).
- Classes anônimas em C#(CSharp)
- Comando nameof() C#(CSharp)
- Compare duas strings ignorando maiúsculas e minúsculas C#(CSharp).
- Consulta SQLServer com paginação
- Criar Classes Dinâmicas usando DynamicObject e ExpandoObject em C# (CSharp)
- Definir o dia em um DateTime.
- DELETE CASCADE no SqlServer
- Desvendando o Poder da Função STRING_AGG no SQL Server para concatenação de dados
- Diferença entre parâmetros REF e OUT em C#(CSharp)
- Emitir sons pelo auto-falante do computador em C# (CSharp)
- Estrangulando um monólito C#(CSharp)
- Exemplo de acesso a dados com SQL Server em C#.
- Exemplo de consulta em SqlServer para encontrar uma chave Estrangeira
- Explorando Tipos de Dados Personalizados no SqlServer: Utilidade e Impacto na Performance
- Extensões para DataReader, tratando valores de suas consultas SQL (DataReaderExtensions) C#(CSharp)
- Formatar CEP em C# (CSharp)
- Função para devolver data do próximo dia da semana informado C#(CSharp).
- Gerando números randômicos para sorteio de jogos de azar C#(CSharp)
- Grafana Loki e .NET Framework com C#
- Incrementando e decrementando variáveis em C#(CSharp)
- Injeção de dependência
- Ler string de conexão (connectionStrings) do arquivo Web.config Asp.Net MVC co C#(CSharp)
- Ordenando um array com o comando OrderBy C#(CSharp)
- Parar um loop foreach usando o comando break C#(CSharp).
- Recuperar a URL da página anterior em Asp.Net C# (CSharp)
- Recuperar a URL da página atual em Asp.Net C# (CSharp)
- Recuperar para código C# (CSharp) o valor de um componente de nossa página
- Retorna o IP da conexão do Cliente em Asp.Net MVC com C# (CSharp)
- Retorna os dados do Navegador do Cliente em Asp.Net MVC com C# (CSharp)
- Salvando CSV com cabeçalho no SQL Server Management Studio
- Separar String de caracteres C#(CSharp)
- Serilog e .NET Framework com C#
- Tipos de dados em C# (CSharp)
- Tipos de dados primitivos em C#(CSharp)
- Validando Valores nulos vindos de nosso Banco de Dados C#(CSharp)
- Validar Modelos com Data Annotation e Windows Form Application C#(CSharp)
- Verificar se uma string é um digito em C# (CSharp)