Cast à partir d'une Instance

Signaler
Messages postés
64
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2009
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Bonjour à tous,

En utilisant la reflection, on peut facilement créer des instances d'objets particulier.

    Object o = Activator.getInstance(Type t);

Or, sachant que l'on a le type, comment peut on réaliser la création d'un objet de ce type puis un cast de l'objet ?
Cela permettrait notamment de travailler directement sur des objets de Type "t" et non sur un Object.

Des propositions ?

PS : Faire un switch pour tester toutes les possibilités de t c'est mal :)
   

5 réponses

Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
vu ton cas, tu as surement un probleme de conception (réflexion pas adaptée au besoin? cast a ne pas faire?). Enfin cest un avis perso...
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
Je suis assez d'accord avec leprov :

- si tu veux caster ton objet, c'est que tu as besoin de l'utiliser dans un "rôle" spécifique, et dans ce cas tu "sais" à l'avance que c'est le cas donc tu peux faire un cast explicit dans ton code.
- Si ce n'est pas le cas, si tu veux pouvoir traiter n'importe quel type d'objet, alors tu n'a surtout pas besoin de le caster...

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
31
Salut,

Quel est le but de la réflection dans ton cas?
Un explication nous permettra de prouver une solution plus élégante.

La réflexion est utilisée :
* Pour les customAttributs
* Pour lire le contenu de classe (reflector), complétion , explorateur de classe
* Pour obtenir le nom de la méthode courante ou du type exécuté exemple pour faire du log
* Pour faire des instanciations de classe exemple plugin
* Test d'exisance de méthode
* Invocation de méthode (plugin)
* Modification de variable privé et invocation de  methodes privées (mais vraiment pas propre et dangereux)
 

http://www.codeproject.com/KB/cs/C__Reflection_Tutorial.aspx
http://www.codeproject.com/KB/cs/reflection.aspx

Bon coding
Messages postés
64
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2009

Hello,

J'utilise la reflection pour faire de l'introspection sur des classes dans le but de créer un système à la hibernate qui permettra de générer du SQL.

En gros, la réflection est quelque chose de primordial dans mon cas (Récupération des membres de la classe, vérification d'existance de méthode, invocation des méthodes etc.)

Ca peut eclaircir les choses ?
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
31
Salut,

Pour réinventer un framework a la hibernate
sachant que linq qui y ressemble vient de sortir et
EntityDataModel qui lui est un vrai ORM sortira bientot (cet été)

Sinon
pour avoir un exemple
http://www.codeproject.com/KB/dotnet/FastSerializer.aspx
Il y a une utilisation de Activator.getInstance(Type t)

http://msdn.microsoft.com/en-us/library/system.activator.aspx

Bon coding