Equivalent de class.forName en c# ?

mitsew Messages postés 4 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 31 mars 2006 - 31 mars 2006 à 10:25
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 - 22 mars 2010 à 13:44
Bonjour,
je voudrais instancier une classe à partir de son nom sous forme de string.
je m'explique:
-j'ai une classe mère c_base_mere
-des classes filles : c_fille1, c_fille2....
(les noms sont fictifs c pour mieux comprendre)

je voudrais faire :
string nom="c_fille1";
C_base_mere ma_classe= class.forName(nom);

class.forName est la façon de faire ej java, je voudrais le faire en c#?

Quelqu'un à la solution ?

9 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 mars 2006 à 10:37
object toto = Activate.CreateInstance( NomDeLaClasseToto );


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
31 mars 2006 à 10:42
Salut,

Essaies ceci :


<HR>
using System.Reflection;
...

string maClasse =
"namespace.nomClasse";

Type t =
Type.GetType(maClasse);

Object o =
Activator.CreateInstance(t);


<HR>



Mx
MVP C#
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 mars 2006 à 11:04
oops... petite erreur... c'est Activator

en gros, avec ton exemple :

string nom="c_fille1";
C_base_mere ma_classe= (C_base_mere)Activator.CreateInstance(Type.GetType(nom));


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 mars 2006 à 11:04
arf... le temps de répondre au téléphone et de cliquer sur "Ajouter"...


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mitsew Messages postés 4 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 31 mars 2006
31 mars 2006 à 16:56
merci beaucoup de votre aide
0
mitsew Messages postés 4 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 31 mars 2006
31 mars 2006 à 17:10
cela ne marche pas je n'ai tjs pas acces au élément de ma classe fille c assez bizare.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 mars 2006 à 22:05
c'est normal !

tu utilises la classe mère la... donc, tu n'as que les membres de la classe mère.


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
cs_beetlejuice722 Messages postés 1 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 29 octobre 2008
29 oct. 2008 à 16:53
Bonjours...

J'ai également le même problème que mitsew !

A savoir, avec cette manière de faire  je "n'ai toujours pas accès au élément de ma classe fille"...
Pour reprendre son exemple, l'instruction qui permettrait d'y accéder serait quelque chose comme cela :
Ex : C_fille1 ma_classe= (C_fille1)Activator.CreateInstance(Type.GetType(nom));

Mais, le problème c'est que ma classe fille (C_fille1) ne devrait pas être explicitement nommée comme dans l'exemple
A vrai dire, son nom devrait être contenu dans une variable string, car sinon cela impliquerait autant de redondance de code
qu'il y aurait d'objet à déclarer pour chaque classe fille !

Par conséquent, quelqu'un aurait-il une suggestion pour résoudre cette problématique ?

Je reste ouvert à toutes suggestions...

Merci par avance !

 
0
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 7
22 mars 2010 à 13:44
pour ceux qui repasserais par ici avec le meme soucis

namespace Test
{
   public class Mere
   {
      public class Fille
      {
      }
   }
}
using System.Reflection;
...

Test.Mere.Fille o = (Test.Mere.Fille)Activator.CreateInstance(Type.GetType("Test.Mere.Fille"));
0
Rejoignez-nous