IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment utiliser un objet generique obtenu par réflexion.


Sujet :

C#

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut Comment utiliser un objet generique obtenu par réflexion.
    Bonjour
    Ce sujet tourne autour du meme theme que mes posts de ces derniers jours (3 Jours que je bloque ) S.O.S

    Par réflexion, je récupére un objet générique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PropertyInfo dleDico = type.GetProperty("LeDico"); // type retourne MaClasse, et le Dico est du type Dictionary<MaClasse> ; mais dans cette partie du code on n'est pas cencé le savoir.
    object o = Activator.CreateInstance(dleDico.PropertyType);
    Donc 2 problemes :
    1) o n'est pas une référence vers mon champ "LeDico" mais simplement un Dictionary<MaClasse> vide.
    2) o est de type object, comment je fais apres pour faire un o.Indexof(1); ?

    Dans la pratique il ne s'agit pas d'un Dictionary, mais d'une classe générique que j'ai défini à l'origine pour ne pas dupliquer du code (et j'aimerai en extraire une interface). Je m'en mord les doigts, car je ne sais pas comment m'en servir sans devenir totalement dépendant de tout ce qui tourne autour de cette classe.

    Merci de m'aider.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par giova_fr Voir le message
    1) o n'est pas une référence vers mon champ "LeDico" mais simplement un Dictionary<MaClasse> vide.
    Bah c'est normal tu fais un CreateInstance. Si tu veux récupérer le propriété d'un objet existant il faut rajouter un GetValue(tonInstance, null) après ton GetProperty.

    2) o est de type object, comment je fais apres pour faire un o.Indexof(1); ?
    Bah tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    o.GetType().GetMethod("IndexOf").Invoke(o, new object[] { xxx });
    Sinon si tu es en C# 4 tu peux utiliser dynamic ça t'aidera grandement.

    Enfin ton problème est pas super expliqué donc si tu veux plus d'aide donne plus de détails.

Discussions similaires

  1. Réponses: 9
    Dernier message: 28/05/2008, 02h06
  2. comment utiliser des objets java avec ireport
    Par Invité dans le forum iReport
    Réponses: 0
    Dernier message: 28/07/2007, 23h18
  3. comment utiliser les objets DAO
    Par marc_calagac dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/06/2007, 21h01
  4. Comment utiliser un objet scrollbar
    Par emilie48 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 28/03/2007, 14h01
  5. [COM] Comment utiliser l'objet COM ?
    Par splinternabs dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 14/04/2006, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo