Récupérer la méthode appelante

Résolu
cs_yh Messages postés 9 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 28 septembre 2009 - 7 juil. 2005 à 08:47
cs_yh Messages postés 9 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 28 septembre 2009 - 7 juil. 2005 à 10:55
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

7 réponses

Miiitch Messages postés 52 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 24 août 2005 1
7 juil. 2005 à 10:13
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
1
aogie Messages postés 108 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 27 novembre 2007
7 juil. 2005 à 09:02
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 --
0
cs_yh Messages postés 9 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 28 septembre 2009
7 juil. 2005 à 09:14
Je pourrais éventuellement passer System.Reflection.MethodBase comme paramètre.

YH
0
aogie Messages postés 108 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 27 novembre 2007
7 juil. 2005 à 09:22
Je pense qu'un passage d'argument est nécessaire sauf si quelqu'un d'autre à une idée ?

-- AOGie --
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_yh Messages postés 9 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 28 septembre 2009
7 juil. 2005 à 09:41
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
0
aogie Messages postés 108 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 27 novembre 2007
7 juil. 2005 à 09:54
A ce moment là, passe le résultat de l'appel GetCurrentMethod() pour regrouper les 2...

-- AOGie --
0
cs_yh Messages postés 9 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 28 septembre 2009
7 juil. 2005 à 10:55
Je te remercie ca marche nickel.

YH
0
Rejoignez-nous