none
Objeto class como parâmetro genérico <T> RRS feed

  • Pergunta


  • Olá Pessoal!

    Estou com um problema sério.
    Preciso passar um objeto do tipo 'class' como um parâmetro genérico <T>

    Por exemplo, estou lendo as propriedades de uma tabela e depois criando uma classe em tempo de execução onde o nome da classe é o nome da tabela e as propriedade da classe, óbvio, são as colunas da tabela com os respectivos nomes e tipos convertidos para o .Net.

    Estou criando a classe em tempo de execução conforme o exemplo

    stackoverflow.com/questions/3862226/dynamically-create-a-class-in-c-sharp

    o resultado ficou assim:

    var clsDinamica = MyTypeBuilder.CreateNewObject("Nome_da_Tabela", ListaDeColunas);

    E agora vem o grande problema:

    Como eu passo o tipo 'class' e não o tipo 'object' para um método genérico?

    No meu caso apenas o tipo 'object' é aceito.

    var clsPopulada = LerDados<object>("tabela");
    
    public HashSet<T> LerDados<T>(string nomeTabela) where T : class, new()
    {
         ...
    }

    Mas, o código acima não atende minha necessidade porque necessito passar um objeto  <class> com o tipo da classe criada dinamicamente

    var clsPopulada = LerDados<clsDinamica>("tabela");
    
    public HashSet<T> LerDados<T>(string nomeTabela) where T : class, new()
    {
         ...
    }

    Já tentei vários exemplos, com Reflection inclusive, mas, nada funcionou,

    alguém sabe como resolver?

    Obrigado!


    quinta-feira, 2 de junho de 2016 21:24