Maison >développement back-end >C++ >Comment puis-je obtenir le nom et la classe de la méthode d'appel à l'aide de C# Reflection ?

Comment puis-je obtenir le nom et la classe de la méthode d'appel à l'aide de C# Reflection ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-29 21:33:10521parcourir

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

Comprendre la méthode appelante à l'aide de Reflection

En C#, il est possible d'utiliser la réflexion pour récupérer des informations sur la méthode appelante et sa classe d'origine . Cela permet aux développeurs de créer des utilitaires ou des fonctionnalités de journalisation qui nécessitent une connaissance du contexte d'appel.

Obtention du nom et de la classe de la méthode d'appel

Pour obtenir le nom de la méthode d'appel et la classe conteneur utilisant la réflexion, suivez ces étapes :

  1. Créez un objet StackFrame représentant la première image de la méthode appelante, qui est la méthode actuelle :

    StackFrame frame = new StackFrame(1);
  2. Récupérer les informations de la méthode du StackFrame :

    var method = frame.GetMethod();
  3. Extraire le nom de la méthode et déclarer tapez :

    var name = method.Name;
    var type = method.DeclaringType;

Exemple

Considérons la classe suivante :

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

Dans une autre classe :

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

Lorsque Call est invoqué, le nom et le type des variables dans SomeMethod de SomeClass contiendront le valeurs :

  • name : "Call" (le nom de la méthode appelante)
  • type : "Caller" (le nom de la classe déclarante)

Utilisation de CallerMemberNameAttribute dans .NET 4.5

Dans .NET 4.5 et versions ultérieures, il existe une approche simplifiée utilisant CallerMemberNameAttribute :

public class SomeClass
{
    public void SomeMethod([CallerMemberName]string memberName = "")
    {
        // Output the calling method name
        Console.WriteLine(memberName);
    }
}

Lorsque SomeClass.SomeMethod est appelé, memberName contiendra le nom de la méthode appelante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn