How to find the FULL name of the calling method in C#
.net, c#, reflection
Solution
This is something like here.
MethodBase method = stackTrace.GetFrame(1).GetMethod();
string methodName = method.Name;
string className = method.ReflectedType.Name;
Console.WriteLine(className + "." + methodName);
Problem
How can I find the full name of a calling method in C#? I have seen solutions: How I can get the calling methods in C# How can I find the method that called the current method? Get Calling function name from Called function But they only give me the top level. Consider the example: ``` namespace Sandbox { class Program { static void Main(string[] args) { test(); } static void test() { var stackTrace = new StackTrace(); var methodBase = stackTrace.GetFrame(1).GetMethod(); Console.WriteLine(methodBase.Name); } } } ``` This simply outputs 'Main'. How can I get it to print 'Sandbox.Program.Main'? It's for a simple logging framework that I am working on. Adding onto Matzi's Answer: Here is the solution: ``` namespace Sandbox { class Program { static void Main(string[] args) { test(); } static void test() { var stackTrace = new StackTrace(); var methodBase = stackTrace.GetFrame(1).GetMethod(); var Class = methodBase.ReflectedType; var Namespace = Class.Namespace; // Added finding the namespace Console.WriteLine(Namespace + "." + Class.Name + "." + methodBase.Name); } } } ``` It produces 'Sandbox.Program.Main' like it should.