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 :

[C#] Comment implémenter Reflection sur structure ? [Débutant(e)]


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut [C#] Comment implémenter Reflection sur structure ?
    Bonjour,

    J'ai un objet A dans laquelle j'ai deux champ a1 et a2. a2 est une structure qui contient deux autres champs a21 et a22
    soit

    A
    =======
    a1="salut"
    a2|a21="la"
    |a22="marine"
    Selon le champ sur laquelle porte la reflection j'ai une erreur :

    Quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mbox( adr.GetType().InvokeMember("a1", BindingFlags.GetField, null, adr,
     null));
    ==>"salut"

    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     mbox( adr.GetType().InvokeMember("a2.a21", BindingFlags.GetField, null,
     adr, null));
    ==>erreur : Champ a2.a21' introuvable

    Elle où l'erreur ?

    Merci de votre aide car je coince serieusement.

  2. #2
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Comment obtiens tu le type adr?
    Il faut récupérer l'équivalent pour a2 et faire ensuite un InvokeMember sur a21.

    @+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut [RESOLU]Merci
    Pour le adr c'est ce qui reste de mon programme de base (j'avais essayé d'en tirer le minimum qui posait problème) mais tu as bien compris le truc.
    Merci bcp ton conseil me permet d'avancer.

    Je sors a2 et je fais la même chose. J'ai testé ça marche Enfin ça complexifie quand même furieusement le code puisqu'on est obligé de faire un analyseur syntaxique (parcourir la chaine des membres a2.a22 ...) ou une procédure récurssive.

    En tous cas je peux avancer. Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/07/2007, 17h12
  2. Réponses: 10
    Dernier message: 10/04/2006, 13h26
  3. comment faire fonctionner l'exe sur une autre machine
    Par brian79 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/05/2004, 14h00
  4. Réponses: 2
    Dernier message: 03/05/2004, 12h13
  5. Comment faire un Drag&Drop sur un tableau
    Par Stef.web dans le forum Composants VCL
    Réponses: 6
    Dernier message: 11/10/2003, 13h12

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