Как найти полное имя вызывающего метода C #
Как я могу найти полное имя вызывающего метода в C #. Я видел решения:
Как я могу получить вызывающие методы в C #
Как я могу найти метод, который вызвал текущий метод?
Получить имя вызывающей функции из вызываемой функции
Но они только дают мне высший уровень. Рассмотрим пример:
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);
}
}
}
Это просто выводит «Main» Как я могу заставить его напечатать «Sandbox.Program.Main»?
Прежде чем кто-либо начнет спрашивать, почему мне нужно это использовать, это для простой среды ведения журналов, над которой я работаю.
EDIT
Добавление к ответу Маци:
Вот решение:
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);
}
}
}
Создает "Sandbox.Program.Main" как должно