Instancier une classe par la Reflection: pb de constructeur.

Signaler
Messages postés
50
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
13 septembre 2008
-
Messages postés
50
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
13 septembre 2008
-
Bonjour à tous :)

Voilà, je fait un programme utilisant la réflection.
Je voudrais instancier un objet dynamiquement. Donc je fais:
object obj = Activator.CreateInstance(mon_type);

Seulement voilà, lorsque je rencontre une classe sans constructor par défault, ça marche pas ...
Alors comment faire ?
Existe-t-il un autre moyen d'instancier un objet ?

Merci d'avance pour vos réponses.

2 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
oui... donner un tableau d'objets qui correspond à un constructeur de ta classe... ou bien, créer un constructeur sans paramètre.

Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
</FO< body>
Messages postés
50
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
13 septembre 2008

Oui, mais justement, je connais pas les arguments ... Je fais en fait de la déserialization manuelle à partir d'un flux xml. Et donc je ne connais que le type de la classe à instancier...

Sinon j'ai trouvé quelque chose d'équivalent:
object obj = System.Runtime.Serialization.FormatterServices.GetSafeUninitializedObject(mon_type)
Seulement, ça marche pas. Même par pour les string. Si je fais ça:
object obj = System.Runtime.Serialization.FormatterServices.GetSafeUninitializedObject(typeof(string))
ça me jete une exception: System.ArgumentException -> Uninitialized Strings cannot be created