Usando classes genéricas com ObjectDataSource

Eu tenho uma classe genérica de Repositório <T> que quero usar com um ObjectDataSource. O repositório <T> reside em um projeto separado chamado DataAccess. De acordo comesta publicação dos grupos de notícias da MS (parte relevante copiada abaixo):

Internamente, o ObjectDataSource está chamando Type.GetType (string) para obter o tipo, por isso precisamos seguir a diretriz documentada em Type.GetType sobre como obter o tipo usando genéricos. Você pode consultar a Biblioteca do MSDN em Type.GetType:

http: //msdn2.microsoft.com/en-us/library/w3f99sx1.asp

No documento, você aprenderá que precisa usar backtick (`) para indicar o nome do tipo que está usando genérico

Além disso, aqui devemos especificar o nome do assembly na cadeia de nome do tip

Então, para sua pergunta, a resposta é usar o nome do tipo da seguinte maneira:

TypeName = "TestObjectDataSourceAssembly.MyDataHandler`1 [System.String], TestObjectDataSourceAssembly"

Ok, faz sentido. Quando eu tento, no entanto, a página lança uma exceção:

<asp:ObjectDataSource ID="MyDataSource" TypeName="MyProject.Repository`1[MyProject.MessageCategory],DataAccess" />

[InvalidOperationException: o tipo especificado na propriedade TypeName de ObjectDataSource 'MyDataSource' não pôde ser encontrado.]

O curioso é que isso só acontece quando estou visualizando a página. Quando abro a caixa de diálogo "Configurar fonte de dados" no designer do VS2008, ela mostra corretamente os métodos na minha classe Repository genérica. Passar a string TypeName para Type.GetType () durante a depuração também retorna um tipo válido. Então, o que dá?

questionAnswers(3)

yourAnswerToTheQuestion