Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1783 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] constructeur dynamique suivant le type passé en paramètre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] constructeur dynamique suivant le type passé en paramètre

n°1459868
Clarkent
Musclor le shérif de l'espace
Posté le 18-10-2006 à 17:26:59  profilanswer
 

Hello,
 
J'aimerai savoir si c'est possible, de créer une méthode capable de construire un objet du type que l'on transmet en paramètre ?
Exemple je transmet à cette methode le type monObjet et lui arrive a appeler le new de monobjet, si je lui transmet le type unautreobjet il est capable d'appeler le new correspondant a la classe unautreobjet.
 
c'est comprehensible :p ?


---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".
mood
Publicité
Posté le 18-10-2006 à 17:26:59  profilanswer
 

n°1461287
chepa_jeml​s
Posté le 20-10-2006 à 13:17:34  profilanswer
 

ah part faire un constructeur pour tous les cas, je voix pas bien comment on peut faire

n°1461600
Vectteur
Hein ?
Posté le 20-10-2006 à 17:53:39  profilanswer
 

par Reflection


---------------
ceci est un bloc de texte
n°1461620
Lamarmotte
Posté le 20-10-2006 à 18:46:27  profilanswer
 

En faut tu souhaite faire une sorte de factory un peu super méga générique?
Si oui, suis la réponse donnée plus haut : la reflection

n°1461621
Lamarmotte
Posté le 20-10-2006 à 18:47:46  profilanswer
 

ca doit être du coté de System.Activator.CreateInstance

n°1461796
Clarkent
Musclor le shérif de l'espace
Posté le 21-10-2006 à 02:08:50  profilanswer
 

oui il s'agit bien de reflecion, le problème etant que je ne vois pas comment appeler le constructeur d'un type passé en paramètre :/.
 
C'est la ou ca coince.
 
Oui c'est une sorte de factory hyper générique :D.


---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".
n°1461805
Vectteur
Hein ?
Posté le 21-10-2006 à 04:05:00  profilanswer
 

ca existe déjà
 
ca sapelle la réflection
 
avec Activator.CreateInstance(tonType)
 
tonType peut etre écrit en string ou a laide de typeof()
 
merci de lire un peu sur le sujet ...

n°1461887
Lamarmotte
Posté le 21-10-2006 à 12:59:40  profilanswer
 

tu as regardé sur MSDN ce que je t'ai dit? la réponse est dedans.

Message cité 1 fois
Message édité par Lamarmotte le 21-10-2006 à 13:00:02
n°1461911
moi23372
Posté le 21-10-2006 à 13:42:17  profilanswer
 

la meilleure solution ce n'est pas de faire de l'introspection, mais c'est d'utiliser des classes génériques.  
 
exemple de fonction générique
 
public void maFonction<T>(): T:new()
{
        T = new T();
}
 
appel:
 
maFonction<monObject>();
 
EDIT: uniquement avec .NET 2.0

Message cité 1 fois
Message édité par moi23372 le 21-10-2006 à 13:43:22
n°1461948
Clarkent
Musclor le shérif de l'espace
Posté le 21-10-2006 à 14:18:14  profilanswer
 

Lamarmotte a écrit :

tu as regardé sur MSDN ce que je t'ai dit? la réponse est dedans.


sorry, a l'heure ou je suis venu sur le forum je n'ai pas été voir :D.
 
Mais ça à l'air sympa :D, je peux pas tester car je suis pas au boulot donc pas de visual studio, mais ça à l'air d'être ça.
Merci ;).
Je n'ai pas trouvé grand chose sur le net à ce sujet et des collègues me disaient qu'en .net c'était l galère à faire voir impossible ...


---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".
mood
Publicité
Posté le 21-10-2006 à 14:18:14  profilanswer
 

n°1461949
Clarkent
Musclor le shérif de l'espace
Posté le 21-10-2006 à 14:20:21  profilanswer
 

moi23372 a écrit :

la meilleure solution ce n'est pas de faire de l'introspection, mais c'est d'utiliser des classes génériques.  
 
exemple de fonction générique
 
public void maFonction<T>(): T:new()
{
        T = new T();
}
 
appel:
 
maFonction<monObject>();
 
EDIT: uniquement avec .NET 2.0


ok pourquoi pas, mais la tu vois je ne sais pas comment appeler une fonction dont je créais le nom manuellement :p, et je suis en framework 1.1.
Autre problème il faut réécrire la méthode pour chaque objet, si j'ai 6 objets il me faut créer 6 méthodes, c'est ce que je voudrai éviter :). Mais merci quand même, car j'vaais oublié ce genre de truc, qui me semble être faisable en java. Par contre je crois que cela est aussi de l'introspection non ?


---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".
n°1462004
Vectteur
Hein ?
Posté le 21-10-2006 à 16:23:38  profilanswer
 

héhé personne ne m'écoute ici !!

n°1462297
Clarkent
Musclor le shérif de l'espace
Posté le 22-10-2006 à 02:14:37  profilanswer
 

beinsi tu l'as dis juste apres lamarmotte :D.
 
Je testerai ca en semaine, mais ca serait assez tordant si c est aussi simple qu'annoncé :D.


---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".
n°1462299
Vectteur
Hein ?
Posté le 22-10-2006 à 04:51:02  profilanswer
 

ski faut pas entendre...


---------------
ceci est un bloc de texte
n°1462410
moi23372
Posté le 22-10-2006 à 13:38:47  profilanswer
 

Clarkent a écrit :

ok pourquoi pas, mais la tu vois je ne sais pas comment appeler une fonction dont je créais le nom manuellement :p, et je suis en framework 1.1.
Autre problème il faut réécrire la méthode pour chaque objet, si j'ai 6 objets il me faut créer 6 méthodes, c'est ce que je voudrai éviter :). Mais merci quand même, car j'vaais oublié ce genre de truc, qui me semble être faisable en java. Par contre je crois que cela est aussi de l'introspection non ?


 
Non il ne faut pas recréer autant de méthode qu'il n'y a d'objet.  
 
Le "T" dans la méthode peut représenté n'importe quel objet. ça ne s'appele pas de l'introspection, mais une classe GENERIQUE qui dit bien ce qu'elle fait.  
Naturellement, si tu es un .NET 1.1, oublie ce truc la qui n'est présent que depuis le .NET 2.0 (ça vient initialement du C++ et pas convaincu que ça existe en JAVA).
 
Donc maintenant, te reste plus que l'introspection.  

n°1462416
Clarkent
Musclor le shérif de l'espace
Posté le 22-10-2006 à 13:54:33  profilanswer
 

Je viens de regarder un petit exemple :).
En effet pas besoin de réécrire x fois la méthode, ça à l'air pas mal, dommage que ma boite reste en 1.1 :/.
 
en effet je ne crois aps qu'il y ait d'équivalent en java, enfin je ne sais pas, je confondais avec un autre principe.


---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".
n°1462479
Vectteur
Hein ?
Posté le 22-10-2006 à 16:38:49  profilanswer
 

pour travailler avec un framework différent installe sur ton PC une machine virtuelle (ya des tools gratuits), c'est ce que l'on fait dans ma 'boite' pour simuler l'environement client ou simplement tester la compatibilité..
 
as tu lu un peu sur la réflection ? c'est vraiment puissant :)


---------------
ceci est un bloc de texte
n°1462499
Clarkent
Musclor le shérif de l'espace
Posté le 22-10-2006 à 17:34:23  profilanswer
 

je ne travaillerai aps sur un framework different car ma boite c'est du framework 1.1, on ne passera pas en version 2 pour un moment.
 
je connaissais la réflexion, j'en avais jamais fait, on m'en avait parlé en java, en .net j'en ai jamais eu vraiment l'utilité :), mais voila que j'en ai besoin :D.


---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] constructeur dynamique suivant le type passé en paramètre

 

Sujets relatifs
[RESOLU] tab multidimensionel en paramètre d'une fonctionNumérique dans Balise <INPUT TYPE='TEXT'> + PHP
fonction qui renvoie le type d'une variable[C++] "typage dynamique" marche pas
type date sous oracleconstructeur en PHP 5
Fonction membre en paramètreRedirection suivant OS
Strcture dynamique à traiter avec XSDJavascript: Fonction en paramètre
Plus de sujets relatifs à : [C#] constructeur dynamique suivant le type passé en paramètre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR