Ir para o conteúdo

Criando Instancia Dinâmica Para Tipo Genérico (Generic Type Parameters)


Criado por Alexis Moura, Set 12 2011 01:31

Não há respostas para este tópico
  • Por favor, faça o login para responder

#1 Alexis Moura

Alexis Moura
  • Alexis Moura
  • Colaborador
  • 2 Revisões

Revisou 12 setembro 2011 - 01:31


/******  

*   Criando instancia dinâmica para tipo Genérico (Generic Type Parameters)   

* Autor: - Alexis Moura

*******/

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;



namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            // retornamos um objeto 

            var entity = GetEntity();



            // instanciamos a classe generica implementando o objeto

            var repository = Activator.CreateInstance(typeof(Repository<>).MakeGenericType(entity.GetType()));



            // invocamos o metodo 

            repository.GetType().GetMethod("Save", new Type[] { entity.GetType() })

                .Invoke(repository, new object[] { entity });

        }

        

        // Metodo que te retorna um objeto que implementa Repository

        private static object GetEntity()

        {

            Carro carro = new Carro();

            carro.modelo = "FIAT";

            return carro;

        }

    }

    

    // objeto carro 

    public class Carro

    {

        public string modelo { get; set; }

    }



    // Class que utiliza o generic

    public class Repository<T>

    {

        // Metodo que recebe o objeto generic

        public void Save(T entity)

        {

            Console.WriteLine(entity.GetType().GetProperties()[0].GetValue(entity, null));

            Console.ReadLine();

        }

    }

}






1 usuário(s) está(ão) lendo este código

1 membro(s), 0 visitante(s) e 0 membros anônimo(s)