Search code examples
reflectionruntimemethodscallcallstack

Answering "Which method called me?" at the run-time in .NET? Or is CallStack data readable by the code?


Presume that there are methodA() , methodB() and methodC().

And methodC() is called at the run-time.

Is is possible to know methodC() is called from what method?

I was thinking if CallStack can be read at the run-time for some checks? If yes, I think it should not be a big deal.

Any ideas?

Thanks!


Solution

  • Use the StackTrace and StackFrame classes. For example:

    StackTrace stackTrace = new StackTrace();          
    StackFrame[] stackFrames = stackTrace.GetFrames();
    
    foreach (StackFrame stackFrame in stackFrames)
    {
        string method = stackFrame.GetMethod().Name;
        // do some stuff with method
    }