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

Windows Forms Discussion :

Retrouver une méthode par réflection


Sujet :

Windows Forms

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Points : 144
    Points
    144
    Par défaut Retrouver une méthode par réflection
    Bonjour,

    Je souhaiterais associer une méthode à un évenement à partir de son nom en String.

    Je ne suis pas expert en VB.NET mais voici un échantillon de ce que je voudrais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim menu As New ToolStripMenuItem("Methode")
    AddHandler menu.Click, AddressOf myMethodName
    Merci de vos réponses.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je peux te proposer une solution qui marche en 2x
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            AddHandler Me.Click, AddressOf AppelleMethode
     
     
        End Sub
     
     
     
        Private Sub AppelleMethode(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim mth As Reflection.MethodInfo = Instance.GetType.GetMethod("nom de la méthode", les paramètres qui vont bien)
            mth.Invoke()
     
        End Sub

    ici Instance re présente l'instance de la classe contenant la méthode
    .GetType permet d'avoir les informations de la classe
    .GetMethod permet d'obtenir une sub ou fonction
    .Invoke permet de l'appeler
    pour les paramètres qui vont bien, le premier à essayer doit etre instance or public or nonpublic
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Points : 144
    Points
    144
    Par défaut
    Merci pour cette solution.

    Par contre, je ne pense pas que je puisse l'appliquer dans mon cas.

    Je m'explique :

    En fait, je souhaite assigner des évements à des objets à la volée. Je voulais donc utiliser la valeur en String comme "paramêtre".

    Il est à mon avis possible d'utiliser votre solution quand même en créant un switch. Mais cela ne me satisfait pas, je vais réfléchir à autre chose.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    quand tu créés des objets à la volée, tu as les instances, donc tu peux faire des addhandlers sans soucis

    et puis rien n'empeche de n'avoir qu'une seule méthode et une dictionary(of object, methodinfo) pour savoir sur qui dispatcher

    enfin si tu expliques de manière plus détaillées, tu auras plus de chances de te voir proposé une solution adaptée au problème
    (et non une réponse technique à une question technique qui n'est peut etre pas la bonne méthode pour ce que tu veux faire en global)
    (parce que c'est quand meme étrange ce que tu veux faire)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [Framework] Appel d'une méthode par Spring
    Par badi082 dans le forum Spring
    Réponses: 3
    Dernier message: 03/06/2008, 12h07
  2. accés à une méthode par un attribut.
    Par ranell dans le forum Langage
    Réponses: 6
    Dernier message: 13/05/2007, 12h00
  3. comment retrouver une méthode dans la javadoc?
    Par pracede2005 dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2006, 16h47
  4. [c#] comment récupérer le namespace d'une DLL par réflection?
    Par Jayceblaster dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/07/2006, 13h20
  5. Réponses: 5
    Dernier message: 17/07/2006, 18h34

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