Verstehen der aufrufenden Methode mithilfe von Reflection
In C# ist es möglich, Reflection zu verwenden, um Informationen über die aufrufende Methode und ihre Ursprungsklasse abzurufen . Dadurch können Entwickler Dienstprogramme oder Protokollierungsfunktionen erstellen, die Kenntnisse über den aufrufenden Kontext erfordern.
Namen und Klasse der aufrufenden Methode abrufen
Um den Namen der aufrufenden Methode abzurufen und die enthaltende Klasse mithilfe von Reflektion, folgen Sie diesen Schritten:
Erstellen Sie ein StackFrame-Objekt, das den ersten Frame der aufrufenden Methode darstellt. Dies ist die aktuelle Methode:
StackFrame frame = new StackFrame(1);
Methodeninformationen aus dem StackFrame abrufen:
var method = frame.GetMethod();
Methodennamen extrahieren und deklarieren Typ:
var name = method.Name; var type = method.DeclaringType;
Beispiel
Betrachten Sie die folgende Klasse:
public class SomeClass { public void SomeMethod() { // Get the calling method and type StackFrame frame = new StackFrame(1); var method = frame.GetMethod(); var type = method.DeclaringType; var name = method.Name; } }
In einer anderen Klasse:
public class Caller { public void Call() { SomeClass s = new SomeClass(); s.SomeMethod(); } }
Wenn Call aufgerufen wird, werden der Name und der Typ der Variablen in der SomeMethod von SomeClass enthalten die Werte:
Verwenden des CallerMemberNameAttribute in .NET 4.5
In .NET 4.5 und höher gibt es einen vereinfachten Ansatz mit dem CallerMemberNameAttribute:
public class SomeClass { public void SomeMethod([CallerMemberName]string memberName = "") { // Output the calling method name Console.WriteLine(memberName); } }
Wenn SomeClass.SomeMethod aufgerufen wird, enthält memberName den Namen der aufrufenden Methode.
Das obige ist der detaillierte Inhalt vonWie kann ich den Namen und die Klasse der aufrufenden Methode mithilfe von C# Reflection abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!