¿Cómo puedo encontrar el nombre completo de un método de llamada en C#. He visto soluciones:Cómo encontrar el nombre completo del método de llamada C#
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
Pero sólo dame el nivel superior. Considere el ejemplo:
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);
}
}
}
Esto simplemente da salida a 'Principal' ¿Cómo puedo conseguirlo para imprimir 'Sandbox.Program.Main'?
Antes de que alguien empiece a preguntar por qué necesito usar esto, es para un marco de registro simple en el que estoy trabajando.
EDITAR
Adición en respuesta de Matzi:
Aquí está la solución:
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);
}
}
}
Produce 'Sandbox.Program.Main' como tiene que
posible duplicado de [Utilización System.Reflection obtener un método Nombre Completo] (http://stackoverflow.com/questions/2968352/using-system-reflection-to-get-a-methods-full -name) – user7116