Informationen zur Aufrufmethode mithilfe von Reflection abrufen
Das Abrufen des Namens und Typs der aufrufenden Methode ist eine häufige Anforderung bei der reflexionsbasierten Programmierung. Wenn eine Funktion ausgeführt wird, kann es hilfreich sein, den Kontext zu bestimmen, in dem sie aufgerufen wurde.
Verwendung der StackFrame-Klasse
Ein Ansatz besteht darin, die StackFrame-Klasse zu verwenden. Der Konstruktor akzeptiert eine Ganzzahl, die die Ebene des zu untersuchenden Stapels darstellt. Durch Übergabe von 1 können wir Informationen über die aufrufende Methode abrufen.
public class Caller { public void Call() { StackFrame frame = new StackFrame(1); var method = frame.GetMethod(); var type = method.DeclaringType; var name = method.Name; } }
Dieser Code weist „Call“ dem Name und „Caller“ dem Type zu. vorausgesetzt, es wird von einer anderen Methode aufgerufen.
Verwendung des CallerMemberName Attribut
In .NET 4.5 und höher bietet das CallerMemberNameAttribute eine einfachere Lösung. Das Attribut gibt den Namen der aufrufenden Methode als Parameter an.
public class SomeClass { public void SomeMethod([CallerMemberName]string memberName = "") { Console.WriteLine(memberName); // Output will be the name of the calling method } }
Dieser Code weist den Namen der aufrufenden Methode automatisch dem Parameter memberName zu, ohne dass eine zusätzliche Überlegung erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection in C# Informationen zur Aufrufmethode abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!