Lorsque vous vous lancez dans la tâche d'obtention d'informations sur la méthode d'appel, vous pouvez rencontrer le besoin d'apprendre le nom de la méthode d'appel et le contenant le nom de la classe. La réflexion C# vous donne la possibilité de rassembler ces détails efficacement.
Pour y parvenir, créez une méthode qui utilise la classe StackFrame. Instanciez un objet StackFrame avec un paramètre de 1, représentant la méthode appelante. Ensuite, appelez la méthode GetMethod() sur le frame de pile pour récupérer les informations de la méthode appelante. La propriété DeclaringType donne accès à la classe contenant la méthode appelante et la propriété Name renvoie le nom de la méthode appelante.
Par exemple, considérons l'extrait de code suivant :
public class SomeClass { public void SomeMethod() { StackFrame frame = new StackFrame(1); var method = frame.GetMethod(); var type = method.DeclaringType; var name = method.Name; } }
En conjonction avec la méthode appelante, ce code permet d'accéder au nom de la classe qui la contient via la variable type et au nom de la méthode appelante via la variable name.
Dans .NET 4.5, CallerMemberNameAttribute fournit une approche alternative et simplifiée. L'utiliser implique d'introduire un paramètre dans la méthode et de l'annoter avec l'attribut [CallerMemberName] :
public void SomeMethod([CallerMemberName]string memberName = "")
Ici, le paramètre memberName sera automatiquement renseigné avec 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!