Ich versuche, den allerersten Methodennamen zu erhalten, der mehrere Methodenaufrufe paraphiert hat.Wie finden Sie den übergeordneten Methodennamen in mehreren Untermethoden in C#?
ich zum Beispiel die unten haben,
static void Main(string[] args)
{
Test1();
}
static void Test1()
{
Test2();
}
static void Test2()
{
Console.WriteLine("Soemthing");
}
Im Test2 Methode, ich brauche die wichtigste Methode wissen hat diese Kette initiiert. Ich habe versucht, mit dem StackTrace und Reflection wie folgt.
StackTrace stackTrace = new StackTrace();
MethodBase methodBase = stackTrace.GetFrame(1).GetMethod();
Console.WriteLine(methodBase.Name);
aber die stackTrace.getFrame (1) ist nicht das, was ich erwarte. Es wird mir die vorherige Methode geben, die Test1 ist.
Ich möchte den Wert getFrame nicht fest auf codieren, um die Main-Methode zu erhalten.
Gibt es eine Möglichkeit, die übergeordnete Methode von einer der Untermethoden zu erhalten, ohne den Frame-Wert hart zu codieren?
Wenn Sie es tun wollen manuell können Sie rechts auf der Methode klicken Sie dann auf Gehe zu Deifnition klicken oder Peek Definition und halten allerdings so, bis Sie die Eltern finden, die Sie wollen. Aber automatisch bin ich nicht sicher – Brendon
Was sind Ihre Kriterien für "die ursprüngliche Methode"? In einer einzigen Thread-Konsole-Anwendung ist es immer "Main", keine Notwendigkeit, es zu bestimmen ... in einem Web-Service, können Sie durch die IIS-Baugruppen krabbeln ... –
Ich tat dies nur für die Forschung. Aber letztendlich werden wir dies mit einem MVC 6 WebAPi verwenden. @ RenéVogt –