Récupérer la méthode appelante [Résolu]

Signaler
Messages postés
9
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
28 septembre 2009
-
Messages postés
9
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
28 septembre 2009
-
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

Messages postés
52
Date d'inscription
jeudi 28 octobre 2004
Statut
Membre
Dernière intervention
24 août 2005
1
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
Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
27 novembre 2007

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 --
Messages postés
9
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
28 septembre 2009

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

YH
Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
27 novembre 2007

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

-- AOGie --
Messages postés
9
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
28 septembre 2009

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
Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
27 novembre 2007

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

-- AOGie --
Messages postés
9
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
28 septembre 2009

Je te remercie ca marche nickel.

YH