QUANDO O TIPO GENÉRICO NÃO É ACEITO
Olá!
Estou tentando implementar um novo padrão no meu sistema, com o entity framework, só que agarrei num problema de tipo genérico.
Eu tenho minha classe assinada dessa forma:
Dentro dela, eu possuo uma propriedade desse tipo:
Sendo DbSet, do namespace System.Data.Entity.
Acontece que essa linha gera um erro pra mim:
Error BC32106 Type argument [ô]Tipo[ô] does not satisfy the [ô]Class[ô] constraint for type parameter [ô]TEntity[ô].
Fica meio claro que não posso passar um tipo genérico, mas sim um objeto mesmo. Tanto é que quando faço:
Isso acaba funcionando
O lance é que eu queria deixar genérico, para ter um melhor reaproveitamento de código.
Alguma idéia de como fazer isso? Já rachei a cabeça aqui e nada...
Muito obrigado a todos!
Estou tentando implementar um novo padrão no meu sistema, com o entity framework, só que agarrei num problema de tipo genérico.
Eu tenho minha classe assinada dessa forma:
Public Class DAO(Of Tipo)
Dentro dela, eu possuo uma propriedade desse tipo:
Public Property Registros As DbSet(Of Tipo)
Sendo DbSet, do namespace System.Data.Entity.
Acontece que essa linha gera um erro pra mim:
Error BC32106 Type argument [ô]Tipo[ô] does not satisfy the [ô]Class[ô] constraint for type parameter [ô]TEntity[ô].
Fica meio claro que não posso passar um tipo genérico, mas sim um objeto mesmo. Tanto é que quando faço:
Public Property Registros As DbSet(Of Usuario)
Isso acaba funcionando
O lance é que eu queria deixar genérico, para ter um melhor reaproveitamento de código.
Alguma idéia de como fazer isso? Já rachei a cabeça aqui e nada...
Muito obrigado a todos!
Talvez com Reflection ou typeof(T)
Valeu pela resposta Kerplunk.
Comecei lendo a documentação toda hoje, um pouco antes de postar a pergunta.
Encontrei a resposta e estou me sentindo extremamente idiota por não não saber disso até o momento hahahaha
Basta assinar a classe dessa forma:
Deixarei aà para qualquer comentário, hoje ainda estarei fechando o tópico.
Abraços!
Comecei lendo a documentação toda hoje, um pouco antes de postar a pergunta.
Encontrei a resposta e estou me sentindo extremamente idiota por não não saber disso até o momento hahahaha
Basta assinar a classe dessa forma:
Public Class DAO(Of Tipo As Class)
Deixarei aà para qualquer comentário, hoje ainda estarei fechando o tópico.
Abraços!
Tópico encerrado , respostas não são mais permitidas