Como encontrar o nome completo do método de chamada C #
Como posso encontrar o nome completo de um método de chamada em c #. Eu vi soluções:
Como posso obter os métodos de chamada em c #
Como posso encontrar o método que chamou o método atual?
Obter nome da função de chamada da função Chamada
Mas eles só me dão o nível superior. Considere o exemplo:
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);
}
}
}
Isso simplesmente gera 'Main' Como posso obtê-lo para imprimir 'Sandbox.Program.Main'?
Antes que alguém comece perguntando por que eu preciso usar isso, é para uma estrutura de log simples que eu estou trabalhando.
EDITAR
Adicionando a resposta de Matzi:
Aqui está a solução:
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);
}
}
}
Produz 'Sandbox.Program.Main' como deveria