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#][2.0] S'abonner à un évènement par reflection


Sujet :

C#

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 285
    Par défaut [C#][2.0] S'abonner à un évènement par reflection
    Bonjour,

    Je cherche un moyen de m'abonner à un évènement par reflexion.

    J'ai l'instance, le nom de l'évènement ainsi que la signature de l'event. Par contre, je connais pas le type donc il je trouve un moyen de m'abonner.

    Je pensais à la reflexion ...

    Si quelqu'un a une idée ...

    Merci !

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Si tu as 3 objets différent qui peuvent tous les 3 lancer le même évènement avec la même signature, qu'est ce qui t'empêche de t'abonner à l'évènement par code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monObjet.MonEvenement += new EventHandler(monObjet_MonEvenement);
    En ayant au préalable créé et implémenté le handler monObjet_MonEvenement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void Form1_Enter(object sender, EventArgs e)
    {
       //...
    }
    si en plus, le traitement est différent en fonction du type d'objet, tu peux utiliser is sur le paramètre sender pour savoir à quel type d'objet tu as à faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Form1_Enter(object sender, EventArgs e)
    {
       if (sender is TypeObjet1)
       {}
       else if (sender is TypeObjet2)
       {}
       else if (sender is TypeObjet3)
       {}
    }

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 285
    Par défaut
    En fait, je ne connais pas du tout le type.
    Donc je ne peux pas faire ce que tu me proposes.

    Le but est que n'importe quelle classe puisse appeler mon service. Je ne peux donc pas savoir à l'avance le type de mon instance mais je dois quand même m'abonner à un event (dont le nom m'est passé en paramètre).

    J'impose juste la signature de l'event ...

    Je voudrais eviter de passer par une interface ...

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 285
    Par défaut
    Bon, j'ai une piste ...

    EventInfo a une méthode AddEventHandler

  5. #5
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par maitrebn
    Bon, j'ai une piste ...

    EventInfo a une méthode AddEventHandler
    Oui c'est bien ca Set up event handlers through reflection

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 285
    Par défaut
    Merci !

    Comme j'ai pas encore eu le temps de tester, je préfèrais pas encore confirmer ...

    Merci encore !

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 285
    Par défaut
    Alors pour info, çà marche nickel ...

    (Désolé pour le retard de réponse mais noël tout çà :o))

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

Discussions similaires

  1. Levée d'événement par reflection
    Par Neewd dans le forum C#
    Réponses: 9
    Dernier message: 26/02/2015, 09h50
  2. Problème pour m'abonner à un évènement levé par une DLL
    Par origan dans le forum Développement Windows
    Réponses: 0
    Dernier message: 05/09/2011, 17h53
  3. Réponses: 6
    Dernier message: 08/05/2007, 21h08
  4. VC# -Déclencher un évènement par le programme
    Par epc dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/10/2006, 13h47
  5. [VB.NET] Comment s'abonner à un événement ?
    Par Aspic dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/02/2006, 15h16

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