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

cs_yh 9 Messages postés mardi 17 février 2004Date d'inscription 28 septembre 2009 Dernière intervention - 7 juil. 2005 à 08:47 - Dernière réponse : cs_yh 9 Messages postés mardi 17 février 2004Date d'inscription 28 septembre 2009 Dernière intervention
- 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
Afficher la suite 

7 réponses

Répondre au sujet
Miiitch 52 Messages postés jeudi 28 octobre 2004Date d'inscription 24 août 2005 Dernière intervention - 7 juil. 2005 à 10:13
+1
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Miiitch
aogie 108 Messages postés vendredi 11 juillet 2003Date d'inscription 27 novembre 2007 Dernière intervention - 7 juil. 2005 à 09:02
0
Utile
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 --
Commenter la réponse de aogie
cs_yh 9 Messages postés mardi 17 février 2004Date d'inscription 28 septembre 2009 Dernière intervention - 7 juil. 2005 à 09:14
0
Utile
Je pourrais éventuellement passer System.Reflection.MethodBase comme paramètre.

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

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

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

YH
Commenter la réponse de cs_yh

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.