Maison > développement back-end > C++ > Comment puis-je obtenir des informations sur la méthode d'appel à l'aide de Reflection en C# ?

Comment puis-je obtenir des informations sur la méthode d'appel à l'aide de Reflection en C# ?

DDD
Libérer: 2025-01-01 10:31:09
original
959 Les gens l'ont consulté

How Can I Get Calling Method Information Using Reflection in C#?

Obtention d'informations sur la méthode d'appel à l'aide de Reflection

Obtenir le nom et le type de la méthode d'appel est une exigence courante dans la programmation basée sur la réflexion. Lorsqu'une fonction s'exécute, il peut être utile de déterminer le contexte dans lequel elle a été invoquée.

Utilisation de la classe StackFrame

Une approche consiste à utiliser la classe StackFrame. Le constructeur prend un entier qui représente le niveau de la pile à examiner. En passant 1, nous pouvons récupérer des informations sur la méthode appelante.

public class Caller
{
    public void Call()
    {
        StackFrame frame = new StackFrame(1);
        var method = frame.GetMethod();
        var type = method.DeclaringType;
        var name = method.Name;
    }
}
Copier après la connexion

Ce code attribuera "Call" à nom et "Caller" à type, en supposant qu'il soit appelé à partir d'une autre méthode.

Utilisation du CallerMemberName Attribute

Dans .NET 4.5 et versions ultérieures, CallerMemberNameAttribute fournit une solution plus simple. L'attribut spécifie le nom de la méthode appelante en tant que paramètre.

public class SomeClass
{
    public void SomeMethod([CallerMemberName]string memberName = "")
    {
        Console.WriteLine(memberName); // Output will be the name of the calling method
    }
}
Copier après la connexion

Ce code attribue automatiquement le nom de la méthode appelante au paramètre memberName, sans nécessiter de réflexion supplémentaire.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal