Jak znaleźć pełną nazwę wywołującej metody C #
Jak mogę znaleźć pełną nazwę metody wywołującej w c #. Widziałem rozwiązania:
Jak mogę uzyskać metody wywołujące w C #
Jak mogę znaleźć metodę, która wywołała bieżącą metodę?
Uzyskaj nazwę funkcji wywołania z wywołanej funkcji
Ale dają mi tylko najwyższy poziom. Rozważmy przykład:
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);
}
}
}
Po prostu wyświetla „Main” Jak mogę go wydrukować „Sandbox.Program.Main”?
Zanim ktokolwiek zacznie pytać, dlaczego muszę to wykorzystać, jest to prosta struktura logowania, nad którą pracuję.
EDYTOWAĆ
Dodanie do odpowiedzi Matziego:
Oto rozwiązanie:
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);
}
}
}
Produkuje „Sandbox.Program.Main” tak jak powinien