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
Barbara StreisandOriginal
2024-12-29 21:33:10521Durchsuche

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);
  2. Methodeninformationen aus dem StackFrame abrufen:

    var method = frame.GetMethod();
  3. 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:

  • 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);
    }
}

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!

Stellungnahme:
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