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
DDDoriginal
2025-01-01 10:31:09966parcourir

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

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

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!

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