How can I find the method that called the current method?


When logging in C#, how can I learn the name of the method that called the current method? I know all about System.Reflection.MethodBase.GetCurrentMethod(), but I want to go one step beneath this in the stack trace. I've considered parsing the stack trace, but I am hoping to find a cleaner more explicit way, something like Assembly.GetCallingAssembly() but for methods.

3/17/2018 6:15:09 PM

Accepted Answer

Try this:

using System.Diagnostics;
// Get call stack
StackTrace stackTrace = new StackTrace();

// Get calling method name

It is from Get Calling Method using Reflection [C#].

9/17/2013 7:00:01 PM

In C# 5 you can get that information using caller info:

//using System.Runtime.CompilerServices;
public void SendError(string Message, [CallerMemberName] string callerName = "") 
    Console.WriteLine(callerName + "called me."); 

You can also get the [CallerFilePath] and [CallerLineNumber].

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow