Zugriff auf Aufrufmethodendetails durch Reflektion
Frage:
Kann Reflektion in C# genutzt werden? um den Namen und Typ der Methode abzurufen, die die aktuelle aufgerufen hat Methode?
Antwort:
Ja, das ist möglich. Hier ist eine Codedemonstration, wie Sie dies erreichen können:
public class SomeClass { public void SomeMethod() { StackFrame frame = new StackFrame(1); MethodBase method = frame.GetMethod(); Type type = method.DeclaringType; string name = method.Name; } }
Betrachten Sie die folgende zusätzliche Klasse:
public class Caller { public void Call() { SomeClass s = new SomeClass(); s.SomeMethod(); } }
In diesem Szenario werden den Variablennamen und -typen die Werte „ zugewiesen. „Anruf“ bzw. „Anrufer“.
Update für .NET 4.5:
Das in .NET 4.5 eingeführte CallerMemberNameAttribute vereinfacht diesen Prozess. In der modifizierten SomeClass unten:
public class SomeClass { public void SomeMethod([CallerMemberName]string memberName = "") { Console.WriteLine(memberName); // Outputs the calling method's name } }
Dies ersetzt die Notwendigkeit der Methoden StackFrame und GetMethod().
Das obige ist der detaillierte Inhalt vonKann C# Reflection den Namen und Typ der aufrufenden Methode offenlegen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!