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

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

Votre réponse

7 réponses

Meilleure réponse
Messages postés
52
Date d'inscription
jeudi 28 octobre 2004
Dernière intervention
24 août 2005
1
Merci
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

Merci Miiitch 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de Miiitch
Messages postés
108
Date d'inscription
vendredi 11 juillet 2003
Dernière intervention
27 novembre 2007
0
Merci
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
Messages postés
9
Date d'inscription
mardi 17 février 2004
Dernière intervention
28 septembre 2009
0
Merci
Je pourrais éventuellement passer System.Reflection.MethodBase comme paramètre.

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

-- AOGie --
Commenter la réponse de aogie
Messages postés
9
Date d'inscription
mardi 17 février 2004
Dernière intervention
28 septembre 2009
0
Merci
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.