Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Instanciando Genericos

Iniciado por blau, 19 de Septiembre de 2010, 05:51:43 AM

« anterior - próximo »

blau

Ufff, el ultimo obstaculo ... a ver...

Tengo una clase generica

public class Keyframe<T> where T : struct
    { ... }

y tengo un problema para instanciarla por reflexion:

tengo una cadena de texto con el tipo base ("Components.Scene.Sequences.Animators.Keyframe")
y otra cadena de texto con el argumento generico ("Microsoft.Xna.Framework.Vector2")

y no veo manera de instanciar desde ahi ¿a alguien se le ocurre alguna idea?

   




blau

No.. :(



porque para instanciar lo primero que me dice que haga es:

Type d1 = typeof<Components.Scene.Sequences.Animators.Keyframe<>>

pero yo no tengo el tipo en estatico, yo tengo una cadena de texto en runtime,

y por mucho Type.GetType(cadena) que hago no consigo obtener la definicion del tipo.


He seguido para adelante porque estan las instancias de ese tipo siempre estan en una lista y a traves del  metodo Add he accedido al parametro para obtener el  tip, pero de verdad que me gustaria saber si se puede hacer directamente.

Vicente

Me he puesto a investigar un poco :)


List<int> myList = new List<int>();
Type t4 = myList.GetType();
Type t5 = t4.GetGenericTypeDefinition();


Si te fijas el nombre del tipo t5 es "List`1". He decidido probar:


Type t1 = Type.GetType("System.Collections.Generic.Dictionary`2");


Y funciona, así que usando la cadena "Components.Scene.Sequences.Animators.Keyframe`1" te debería funcionar :)

blau


Yo probe esto:

Type.GetType("Components.Scene.Sequences.Animators.Keyframe`1[Microsoft.Xna.Framework.Vector2]");

y no funciono, aunque esto cobra sentido para mi, el 1 es el numero de argumentos, ahora ya si podria llamar MakeGenericType.

Muchas gracias






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.