Tengo un Repositorio genérico <T> clase que quiero usar con un ObjectDataSource. El repositorio <T> vive en un proyecto separado llamado DataAccess. De acuerdo con this post from the MS newsgroups (parte pertinente copiado abajo):Uso de clases genéricas con ObjectDataSource
Internamente, el ObjectDataSource está llamando Type.GetType (cadena) para obtener el tipo , por lo que necesitamos para seguir la directriz documentada en Type.GetType sobre cómo a obtener el tipo usando genéricos. Se puede hacer referencia a la biblioteca de MSDN en Type.GetType:
http://msdn2.microsoft.com/en-us/library/w3f99sx1.aspx
Desde el documento, aprenderá que es necesario utilizar comillas invertidas (`) para denota el nombre del tipo que está utilizando los genéricos.
Además, aquí debemos especificar el nombre del ensamblado en la cadena del nombre del tipo.
Por lo tanto, para su pregunta, la respuesta es utilizar el nombre del tipo como sigue:
TypeName = "TestObjectDataSourceAssembly.MyDataHandler`1 [System.String], TestObjectDataSourceAssembly"
bien, tiene sentido . Cuando lo intento, sin embargo, la página se produce una excepción:
<asp:ObjectDataSource ID="MyDataSource" TypeName="MyProject.Repository`1[MyProject.MessageCategory],DataAccess" />
[InvalidOperationException:. El tipo especificado en la propiedad TypeName de ObjectDataSource 'MyDataSource' no se pudo encontrar]
El Lo curioso es que esto solo sucede cuando estoy viendo la página. Cuando abro el diálogo "Configurar origen de datos" del diseñador de VS2008, me muestra correctamente los métodos en mi clase de Repositorio genérico. Pasar la cadena TypeName a Type.GetType() mientras la depuración también devuelve un tipo válido. Entonces, ¿qué da?
<% Response.Write (typeof (YourClassName) .AssemblyQualifiedName); %> –