Heim > Backend-Entwicklung > C++ > Wie kann ich den Namen und die Klasse der aufrufenden Methode mithilfe von C# Reflection abrufen?

Wie kann ich den Namen und die Klasse der aufrufenden Methode mithilfe von C# Reflection abrufen?

Barbara Streisand
Freigeben: 2024-12-29 21:33:10
Original
518 Leute haben es durchsucht

How Can I Get the Calling Method's Name and Class Using C# Reflection?

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:

  1. Erstellen Sie ein StackFrame-Objekt, das den ersten Frame der aufrufenden Methode darstellt. Dies ist die aktuelle Methode:

    StackFrame frame = new StackFrame(1);
    Nach dem Login kopieren
  2. Methodeninformationen aus dem StackFrame abrufen:

    var method = frame.GetMethod();
    Nach dem Login kopieren
  3. Methodennamen extrahieren und deklarieren Typ:

    var name = method.Name;
    var type = method.DeclaringType;
    Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

In einer anderen Klasse:

public class Caller
{
    public void Call()
    {
        SomeClass s = new SomeClass();
        s.SomeMethod();
    }
}
Nach dem Login kopieren

Wenn Call aufgerufen wird, werden der Name und der Typ der Variablen in der SomeMethod von SomeClass enthalten die Werte:

  • Name: „Call“ (der Name der aufrufenden Methode)
  • Typ: „Caller“ (der deklarierende Klassenname)

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);
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage