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
Libérer: 2024-12-29 21:33:10
original
518 Les gens l'ont consulté

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);
    Copier après la connexion
  2. Récupérer les informations de la méthode du StackFrame :

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

    var name = method.Name;
    var type = method.DeclaringType;
    Copier après la connexion

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;
    }
}
Copier après la connexion

Dans une autre classe :

public class Caller
{
    public void Call()
    {
        SomeClass s = new SomeClass();
        s.SomeMethod();
    }
}
Copier après la connexion

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);
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal