2011-01-05 5 views
3

J'ai une chaîne contenant le nom d'une classe générique avec le type spécifié:instancier un type générique de chaîne

string s = "GenericRouteHandler<MemberHandler>"; 

Comment puis-je créer une instance de cette chaîne? Je sais comment instancier une classe concrète en utilisant Type.GetType() et puis j'utilise Activator mais je ne suis pas sûr où aller avec une classe générique.

+0

Peut être lié: http://stackoverflow.com/questions/4629/c-eval-equivalent – JYelton

Répondre

2

Vous aimez cette typeof(GenericRouteHandler<>).MakeGenericType(typeof(MemberHandler));

Bien sûr, si vous ne possédez pas les types que vous devez utiliser Type.GetType(string) pour obtenir le type au lieu de typeof.

EDIT: Ensuite, vous devez activer le type Activator.CreateInstance() ou invoquer un contructor si savoir la signature myGenericType.GetConstructor(ctorArgsTypes).Invoke(ctorParams);; il peut être plus rapide si le cache des consturctors il peut être plus rapide que Activator.CreateInstance()

msdn

+0

Merci, ça va faire! – Andrey

Questions connexes