Otra de tipos

08/01/2008 - 03:57 por Rolando | Informe spam
Otra de tipos:

A lo mejor es algo sencillo o hay una funcion para eso.

Si tengo un tipo en una variable MiTipo, Como puedo crear un objeto del tipo
contenido en la variable ?

ej.
..
<MiTipo> bd = new <MiTipo>();

MiTipo es una variable de tipo System.Type.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
08/01/2008 - 08:11 | Informe spam
"Rolando" wrote in message
news:%
A lo mejor es algo sencillo o hay una funcion para eso.

Si tengo un tipo en una variable MiTipo, Como puedo crear un objeto del
tipo contenido en la variable ?

ej.
..
<MiTipo> bd = new <MiTipo>();

MiTipo es una variable de tipo System.Type.




MiTipo obj = Activator.CreateInstance(MiTipo);
Respuesta Responder a este mensaje
#2 Rolando
08/01/2008 - 12:23 | Informe spam

MiTipo es una variable de tipo System.Type.




MiTipo obj = Activator.CreateInstance(MiTipo);




No me expliqué bien. Es que MiTipo no es el nombre del tipo sino una
variable de tipo System.Type cuyo valor es el tipo que quiero. Por ejemplo
MiTipo podria tener algo asi:. System.Type MiTipo= typeof(bindingsource).

entonces quiero crear en una instancia del tipo que tiene MiTipo, el cual el
programa no sabe necesariamente cual es en un momento dado.

Gracias por tu ayuda.
Respuesta Responder a este mensaje
#3 Alberto Poblacion
08/01/2008 - 13:15 | Informe spam
"Rolando" wrote in message
news:

MiTipo es una variable de tipo System.Type.




MiTipo obj = Activator.CreateInstance(MiTipo);




No me expliqué bien. Es que MiTipo no es el nombre del tipo sino una
variable de tipo System.Type cuyo valor es el tipo que quiero. Por ejemplo
MiTipo podria tener algo asi:. System.Type MiTipo= typeof(bindingsource).



Que sí, que Activator.CreateInstance tiene una sobrecarga que acepta un
System.Type exactamente como tú quieres (además de otras sobrecargas que
aceptan un tipo por su nombre).
Respuesta Responder a este mensaje
#4 Rolando
08/01/2008 - 14:25 | Informe spam
Es que no me compila cuando trato de poner:

MiTipo obj =Activator..

Claro, luego descubrí que si pongo:

var obj = Activator.CreateInstance(MiTipo);

// ya me funciona bien, porque mi duda era que me devolviera un Object y no
directamente el tipo que tengo en la variable MiTipo.

Sí que me ayudó esta vez la nueva version 2008 :)

Gracias de nuevo, amigo Alberto.


"Alberto Poblacion"
escribió en el mensaje news:

"Rolando" wrote in message
news:

MiTipo es una variable de tipo System.Type.




MiTipo obj = Activator.CreateInstance(MiTipo);




No me expliqué bien. Es que MiTipo no es el nombre del tipo sino una
variable de tipo System.Type cuyo valor es el tipo que quiero. Por
ejemplo MiTipo podria tener algo asi:. System.Type MiTipo=
typeof(bindingsource).



Que sí, que Activator.CreateInstance tiene una sobrecarga que acepta un
System.Type exactamente como tú quieres (además de otras sobrecargas que
aceptan un tipo por su nombre).





Respuesta Responder a este mensaje
#5 Alberto Poblacion
08/01/2008 - 16:11 | Informe spam
"Rolando" wrote in message
news:
Es que no me compila cuando trato de poner:

MiTipo obj =Activator..

Claro, luego descubrí que si pongo:

var obj = Activator.CreateInstance(MiTipo);

// ya me funciona bien, porque mi duda era que me devolviera un Object y
no directamente el tipo que tengo en la variable MiTipo.



Es que es Activator.CreateInstance puede devolver cualquier tipo de
dato, dependiendo de lo que le pases como parámetro. Por eso su tipo de
retorno está definido como Object. Para recibirlo, necesitas una variable de
tipo Object:

Object obj = Activator.CreateInstance(...);

Sí que me ayudó esta vez la nueva version 2008 :)



En la sentencia que has puesto, el compilador interpreta "var" exctamente
igual que "object" porque ese es el tipo que le asignas en la
inicialización, asi que el 2008 no te aporta (en este caso) ninguna ventaja
respecto a las versiones anteriores.

Si quieres asignar a una variable de MiTipo el resultado de una función
que devuelve Object (y sabes que el Object devuelto es de tipo MiTipo), lo
que tienes que hacer es un "cast":

MiTipo obj = (MiTipo)Activator.CreateInstance(...);

Perdón por no habértelo puesto en el primer ejemplo que te puse. Se me
olvidó el (MiTipo).
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida