pasar parámetros de tipo genéricos

09/12/2006 - 22:01 por Diego Javier Martínez | Informe spam
Buenas. Necesito pasar un parámetro de tipo a una clase que trabaja con tipos
genéricos. El tipo que debo pasar por parámetro corresponde al de una
propiedad del tipo objeto y puede ser variable, por lo que la declaración del
objeto debería ser algo así:

public property myobject as object

end property


dim instancia new TypeObjctProperty(Of tipo_del_objeto)

Como se puede deducir de lo anterior, la propiedad myobject recibe un objeto
que puede ser de cualquier tipo, luego, cuando creo una instancia del
TypeObjectProperty, tengo que pasar ese tipo (que desconozco en tiempo de
diseño) al constructor de la clase.

Si alguien sabe alguna forma de hacerlo les agradeceré toda la ayuda que
puedan darme.

Saludos, Diego

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MVP]
11/12/2006 - 06:27 | Informe spam
Puedes crear una instancia del genérico usando reflection, así:

' Obtengo el tipo que quiero usar en el generico
Dim tipo_del_objeto As Type = myobject.GetType()

' Obtengo el tipo del generico
Dim tipo_generico As Type = GetType(TypeObjectProperty(Of ))

' Obtengo el generico para el tipo que quiero usar
Dim tipo_generico_tipado As Type = tg.MakeGenericType(tipo_del_objeto)

' Creo la instancia
Dim instancia As Object = Activator.CreateInstance(tipo_generico_tipado)

El problema es que la instancia la tendrás que manejar como Object
porque no sabes el tipo exacto en tiempo de diseño.

Eduardo A. Morcillo [MVP VB]
http://www.mvps.org/emorcillo/
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MVP]
14/12/2006 - 16:44 | Informe spam
Diego, lo que quieres hacer es lo que yo te indiqué. No puedes hacer la
declaración como muestras, debes crear la instancia usando reflection.

Public Sub CrearArgumentos

' Obtengo el tipo que quiero usar en el generico
Dim tipo_del_objeto As Type = myobject.GetType()

' Obtengo el tipo del generico
Dim tipo_generico As Type = GetType(TypeObjectProperty(Of ))

' Obtengo el generico para el tipo que quiero usar
Dim tipo_generico_tipado As Type = tg.MakeGenericType(tipo_del_objeto)

' Creo la instancia
Dim arg As EventArgs

arg = Activator.CreateInstance(tipo_generico_tipado)

End Sub

Eduardo A. Morcillo [MVP VB]
http://www.mvps.org/emorcillo/
http://mvp.support.microsoft.com/pr...4EF5A4191C
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida