Как найти полное имя вызывающего метода в С#. Я видел решения:
Как я могу получить вызовы в С#
Как найти метод, который вызвал текущий метод?
Получить имя функции вызова из вызываемой функции
Но они только дают мне верхний уровень. Рассмотрим пример:
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"?
Прежде чем кто-нибудь начнет спрашивать, зачем мне это нужно, его для простой структуры ведения журнала, над которой я работаю.
ИЗМЕНИТЬ
Добавление на Matzi Ответ:
Вот решение:
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);
}
}
}
Создает "Песочницу". "Программа". Как правило, она должна