Comment créer une instance à partir d’une chaîne fournissant le nom de la classe?

Je dois écrire une fonction avec la classe Nom comme paramètre de fonction, qui est en chaîne. Donc, je dois créer une instance de ce nom de classe.

createInstance(ssortingng ClassName){ ............. //Here i Need to create instance of ClassName, ............. } 

 Activator.CreateInstance(Type.GetType(ClassName)); 
 Type t = Assembly.GetType(className); Activator.CreateInstance(t); 

Fonctionne uniquement si T est un type public et a un constructeur public sans paramètre. Mais c’est ce qui se passe et cela peut fonctionner dans d’autres cas également.

Comme tout le monde vous l’a dit, vous devez obtenir le type que vous recherchez, puis le transmettre à la méthode CreateInstance de Activator de la manière suivante:

 Type t = Type.GetType(className); Activator.CreateInstance(t); 

Faites juste attention au fait que si vous passez à GetType le nom complet de la classe que vous essayez d’instancier (par exemple “MyNamespace.Foo”), il ne vous retournera le type que s’il est appelé depuis le même assemblage que la classe recherchée sinon, il retourne null.

Si vous voulez que cela fonctionne pour les types qui se trouvent dans un assemblage générique, vous devez utiliser AssemblyQualifiedName (regardez ici pour les détails: http://msdn.microsoft.com/en-us/library/system.type. assemblyqualifiedname.aspx )