C# - Criando e usando uma classe ou método Genérico


  Neste artigo vou mostrar como podemos criar e usar classes e/ou métodos genéricos na linguagem C#.

Utilizar os recursos do Generics é uma forma interessante e poderosa de escrever código C#.

Por exemplo, ao invés de especificar o tipo de dados dos elementos no código em tempo de projeto você pode postergar a especificação desses elementos até os mesmos serem usados no código.

Isso significa que sua classe ou método pode trabalhar com qualquer tipo de dados.

Vamos então mostrar como criar uma classe genérica que pode tomar qualquer tipo de dados como parâmetro no seu construtor e fazer algo com ele.

Criando uma solução no VS 2017 usando o template Visual C# -> Windows Classic Desktop -> Console App ;

Declarar uma classe genérica é muito simples, basta criar a classe com um parâmetro de tipo genérico <T>:

A seguir crie uma variável privada do tipo do parâmetro genérico que vai tratar o valor passado para a classe:

Assim criamos a classe ExecutaAcao<T> e definimos a variável _valor do tipo T.

Agora precisamos adicionar um construtor na classe que irá tomar como parâmetro um valor do tipo T.

A variável privada _valor irá receber o valor do parâmetro valor passado para o construtor.

   

Para concluir vamos criar um método chamado identificaTipoDado() que irá nos informar qual o tipo de dados foi passado para a classe Genérica usando o método GetType().

Então agora vamos testar a classe incluindo o código no método Main():
 

using System.Data;
using static System.Console;
namespace Cshp_Generics
{
    public class ExecutaAcao<T>
    {
        private T _valor;
        public ExecutaAcao(T valor)
        {
            _valor = valor;
        }
        public void IdentificaTipoDado()
        {
            WriteLine($"O tipo de dados da variável fornecida  é : { _valor.GetType()}");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            ExecutaAcao<int> iAcao = new ExecutaAcao<int>(21);
            iAcao.IdentificaTipoDado();
            ExecutaAcao<decimal> dAcao = new ExecutaAcao<decimal>(21.55m);
            dAcao.IdentificaTipoDado();
            ExecutaAcao<string> sAcao = new ExecutaAcao<string>("Macoratti .net");
            sAcao.IdentificaTipoDado();
            DataSet dsData = new DataSet();
            ExecutaAcao<DataSet> oAction = new ExecutaAcao<DataSet>(dsData);
            oAction.IdentificaTipoDado();
            ReadLine();
        }
    }

Executando o projeto iremos obter o seguinte resultado:

Conclusão:

Usando Generics podemos reutilizar um classe ou método evitando a repetição de código desnecessário. Estamos aderente ao princípio DRY - não se repita.

A utilização de classes genéricas também permite que você crie uma classe que é segura na compilação; isso significa que você pode ter certeza do tipo de objeto e pode usar a classe de forma específica sem obter um comportamento inesperado.

Além disso você escreve menos código devido a reutilização.

Disse-lhe Jesus: Eu sou o caminho, e a verdade e a vida; ninguém vem ao Pai, senão por mim.
João 14:6

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti