2009-03-24 8 views
1

C'est ce dont je parle:Est-il possible d'obtenir la méthode de nom de cela appelle une autre méthode?

Public Shared Sub Test1() 
    Test2() 
End Sub 

Public Shared Sub Test2() 
    MsgBox(Test2.LastMethod) ' Test1 
End Sub 

J'imagine que si cela est possible, System.Reflection sera utilisé?

Des pensées?

+0

duplication possible de [Accès par programme à la pile des appels dans .net] (http://stackoverflow.com/questions/13434/access-access-acc-auto-program-a-call-stack-in-net) – senderle

+0

Voir cette question: http: //stackoverflow.com/questions/13434/programatic-access-to-call-stack-in-net –

Répondre

7

Regardez la classe System.Diagnostics.StackFrame.

StackFrame frame = new StackFrame(1); 
MethodBase method = frame.GetMethod(); 
Console.WriteLine(method.Name); 

En marge, vous ne devriez pas dépendre de qui vous appelant est et ne doit pas utiliser sauf si vous écrivez un débogueur ou à des fins d'exploitation forestière.

+0

+1 pour la réponse, je reviendrais à +1 pour la mise en garde si je pouvais –

+0

Autre mise en garde: si la méthode est JIT-inline retournera la mauvaise méthode. –

1
Dim stackFrame As New Diagnostics.StackFrame(1) 
stackFrame.GetMethod.Name.toString() & stackFrame.GetMethod.DeclaringType.FullName.tostring() 

Doit vous donner le nom complet.

Questions connexes