Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Récupérer la méthode appelante [ Archives / .NET ] (yh)

jeudi 7 juillet 2005 à 08:47:48 | Récupérer la méthode appelante

yh

Bonjour,

Je souhaiterais récupérer dans une méthode de classe les informations de la classe et de la méthode qui l'appelle.
J'ai essayé d'utiliser System.Reflection.MethodeBase mais quand je l'utilise il me donne les infos pour la méthode en cours et non celle qu'il l'avait appelé.
Exemple :
   public void maMethode() {
      ....
      MethodeAAppeler(param1);
      ...
   }
   Dans MethodeAAppeler, méthode d'une autre classe, je souhaite récupérer le nom de la méthode maMethode sans la passer en paramètre (ou du moins pas en dur mais en utilisant un objet éventuellement)

Merci
YH

jeudi 7 juillet 2005 à 09:02:52 | Re : Récupérer la méthode appelante

aogie

Bonjour,

Sans argument, je ne sais pas si c'est possible de connaître une méthode appelante. Une assembly appelante, oui mais une méthode

-- AOGie --

jeudi 7 juillet 2005 à 09:14:15 | Re : Récupérer la méthode appelante

yh

Je pourrais éventuellement passer System.Reflection.MethodBase comme paramètre.

YH

jeudi 7 juillet 2005 à 09:22:44 | Re : Récupérer la méthode appelante

aogie

Je pense qu'un passage d'argument est nécessaire sauf si quelqu'un d'autre à une idée ?

-- AOGie --

jeudi 7 juillet 2005 à 09:41:56 | Re : Récupérer la méthode appelante

yh

Je veux bien passer des paramètres mais je ne voudrais pas passer le nom en dur ni System.Reflection.GetCurrentMethod().ReflectedType.FullName et System.Reflection.GetCurrentMethod().Name mais plutot qq chose comme System.Reflection seulement pour regrouper les 2

YH

jeudi 7 juillet 2005 à 09:54:06 | Re : Récupérer la méthode appelante

aogie

A ce moment là, passe le résultat de l'appel GetCurrentMethod() pour regrouper les 2...

-- AOGie --

jeudi 7 juillet 2005 à 10:13:07 | Re : Récupérer la méthode appelante

Miiitch

Réponse acceptée !
voila comment faire avec les classes System.Diagnostic.StackTrace et StackFrame:
Ce code liste la pile, mais pour avoir juste la méthode appelante il faut ecrire st.GetFrame(1).GetMethod()

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Reflection;

namespace TestProject
{
    class Program
    {
        static void f()
        {
            StackTrace st = new StackTrace();
            int i;
            for (i = 0; i < st.FrameCount; i++)
            {
                StackFrame sf = st.GetFrame(i);
                Console.WriteLine("Frame #{0}: {1}",i, sf.GetMethod().Name);
            }

        }
        static void g()
        {
            f();
        }

        static void Main(string[] args)
        {
            g();
            Console.ReadLine();
        }
    }
}



Miiitch


jeudi 7 juillet 2005 à 10:55:11 | Re : Récupérer la méthode appelante

yh

Je te remercie ca marche nickel.

YH



Cette discussion est classé dans : récupérer, classe, méthode, appelante, mamethode


Répondre à ce message

Sujets en rapport avec ce message

Declaration dynamique d'une classe [ par Barz ] Comment par code peut-on executer une méthode d'une classe en dynamique, c'est à dire en ayant que une chaine correspondant au nom de la classe et une Enlever l'héritage d'une classe [ par JuS ] Je m'explique ...Existe-t-il une méthode permettant de ne pas avoir accès aux méthodes héritées d'une classe ? (à part la méthode de créer les mêmes m Destructeur de classe [ par jeanajaccio ] Bonjour à tous,J'ai codé une classe dont une méthode execute une boucle, je voudrais que si une condition n'est pas réalisée, sortir de la méthode et Méthode Dispose... [ par Diamondduff ] Je débute en c#, lorsque l'on utilise une classe faut-il la refermer?j'ai vu la méthode dispose() dans la classe...Test Maclasse = New test();... acti adresse ip grâce à la classe socket [ par ivanoff1 ] Bonsoir,Est-ce que quelqu'un sait comment récupérer l'adresse IP quand on utilise la classe "Socket"?En fait, quand je reçois des données avec ".Recei Thread & Exception [ par Bidou ] Bonjour,En fait j'ai une méthode qui démarre un nouveau thread (une méthode d'un autre object) et dans ce nouveau thread, il est possible qu'il se pro Invoke ou pas ? [ par crougni77 ] Salut tout le monde, mon first post, pour une petite question... voila j'ai une classe qui un méthode avec un traitement assez long. Cette méthode es Masquer une méthode héritée [ par AbyssDev ] Tout d'abord bonjour à tous.J'ai créé une classe ListePrenoms qui hérite de ArrayList.Ma classe ListePrenoms dispose d'une méthode Add qui prend en pa ajouter une méthode à une classe préexistante ... [ par LocalStone ] Hum ... Encore moi ... Euh ... Je cherche ça aussi, mais je ne trouve pas non plus ! Comment on peut faire pour ajouter une méthode à une classe qui retourné un tableau de ListViewItem d'une méthode qui se trouve dans une classe (recherche de fichier) [ par gazza ] Bonsoir a tous, j'aimerai savoir comment faire recupéré un tableau de ListViewItem dans une méthode qui se trouve dans une classe, je m'explique. c'


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.