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
 

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

Preguntas similares