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 :
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);
Récupérer les informations de la méthode du StackFrame :
var method = frame.GetMethod();
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 :
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!