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