OVH Cloud OVH Cloud

instancier une classe par son nom

2 réponses
Avatar
Thierry Schembri
Bonjour,

Je voudrais instancier une classe et appeler une de ces méthodes, sachant
que le nom de la classe en question est dans une string.

En gros, faire en C# ce que je fais en java :

ClassLoader cl = ClassLoader.getSystemClassLoader();
c = cl.loadClass(nom_classe);

Merci de votre aide !

2 réponses

Avatar
Lloyd Dupont
ben en C# tu ferais:

Assembly theSrc = .... something ...;
Type t = theSrc.GetType(typeName);
object o = Activator.CreateInstance(t);

En fait, maintenant que je regarde la documentation je vois que tu peux meme
faire
object o = Activator.CreateInstanceForm(theAssemblyName, theTypeName)

en fait, y'a aussi des option pour ne pas utiliser le constructeur par
defaut.

Si tu ne veux pas utiliser les activator ou avoir plus de control, tu peux
utiliser la reflection et faire
t.GetConstructors() .... (va voir la doc ca te donneras des idees...)

"Thierry Schembri" wrote in message
news:%23qZXku$
Bonjour,

Je voudrais instancier une classe et appeler une de ces méthodes, sachant
que le nom de la classe en question est dans une string.

En gros, faire en C# ce que je fais en java :

ClassLoader cl = ClassLoader.getSystemClassLoader();
c = cl.loadClass(nom_classe);

Merci de votre aide !



Avatar
Fabien Bezagu
Quelque chose autour de la classe Activator et sa méthode CreateInstance
devrait faire l'affaire.

"Thierry Schembri" a écrit dans le message de
news: %23qZXku$
Bonjour,

Je voudrais instancier une classe et appeler une de ces méthodes, sachant
que le nom de la classe en question est dans une string.

En gros, faire en C# ce que je fais en java :

ClassLoader cl = ClassLoader.getSystemClassLoader();
c = cl.loadClass(nom_classe);

Merci de votre aide !