So finden Sie den vollständigen Namen der aufrufenden Methode C #

Wie finde ich den vollständigen Namen einer aufrufenden Methode in C #. Ich habe Lösungen gesehen:

Wie bekomme ich die aufrufenden Methoden in C #

Wie kann ich die Methode finden, die die aktuelle Methode aufgerufen hat?

Name der aufrufenden Funktion von der aufgerufenen Funktion abrufen

Aber sie geben mir nur die oberste Ebene. Betrachten Sie das Beispiel:

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);
        }
    }
}

Dies gibt einfach 'Main' aus. Wie kann ich dafür sorgen, dass 'Sandbox.Program.Main' gedruckt wird?

Bevor jemand fragt, warum ich das verwenden muss, ist es ein einfaches Protokollierungsframework, an dem ich arbeite.

BEARBEITEN

Hinzufügen zu Matzis Antwort:

Hier ist die Lösung:

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);
        }
    }
}

Erzeugt 'Sandbox.Program.Main' wie es sollte

Antworten auf die Frage(5)

Ihre Antwort auf die Frage