2009-02-07 6 views
4

Si je devais classe générique:Création d'un générique basé sur la classe de type

public class GenericTest<T> : IGenericTest {...} 

et j'avais une instance de type, que je suis arrivé par la réflexion, comment pourrais-je instancier GenericType avec ce type? Par exemple:

public IGenericTest CreateGenericTestFromType(Type tClass) 
{ 
    return (IGenericTest)(new GenericTest<tClass>()); 
} 

Bien sûr, la méthode ci-dessus ne compilera pas, mais elle illustre ce que j'essaie de faire.

Répondre

8

Vous devez utiliser Type.MakeGenericType:

public IGenericTest CreateGenericTestFromType(Type tClass) 
{ 
    Type type = typeof(GenericTest<>).MakeGenericType(new Type[] { tClass }); 
    return (IGenericTest) Activator.CreateInstance(type); 
} 
+0

Merci! Réponse parfaite. – Jeremy

Questions connexes