À l'aide de la réflexion pour obtenir le nom de la méthode et des paramètres
Je suis en train d'entraînement de manière à en programmant créer une clé pour Memcached, basé sur le nom de la méthode et des paramètres. Donc, si j'ai une méthode,
string GetName(int param1, int param2);
il serait de retour:
string key = "GetName(1,2)";
Je sais que vous pouvez obtenir le MethodBase l'aide de la réflexion, mais comment puis-je obtenir les valeurs de ces paramètres dans la chaîne, et non pas les types de paramètres?
Double Possible de l'Obtention de la valeur de parms l'aide de la réflexion
OriginalL'auteur Ash | 2009-01-23
Vous devez vous connecter pour publier un commentaire.
Ce que vous cherchez est un intercepteur. Comme son nom l'indique, un intercepteur intercepte un appel de méthode et vous permet d'effectuer des choses avant et après une méthode est appelée. C'est très populaire dans de nombreux de la mise en cache et la journalisation des cadres.
OriginalL'auteur Scott Muc
Vous ne pouvez pas obtenir la méthode des valeurs de paramètre de la réflexion. Vous devez utiliser le débogage/API de profilage. Vous pouvez obtenir les noms des paramètres et types, mais pas les paramètres eux-mêmes. Désolé...
Avec Réflexion, vous pouvez obtenir les noms des paramètres: msdn.microsoft.com/en-us/library/...
C'est fondamentalement un duplicata de votre réponse, ici, seulement que répondre a quelques bons liens et la question est formaté un peu mieux.
Bien, et que la réponse a été écrit près de 11 mois plus tard... je ne suis pas sûr que le but de votre commentaire.
A l'origine, je pensais qu'il pourrait être judicieux de mettre à jour cette réponse avec les informations supplémentaires, ou au moins un lien pointant vers la réponse avec plus d'informations. Si les questions sont vraiment la même, alors il est probablement de sens que de simplement fermer l'un de la question comme un doublon.
OriginalL'auteur Jon Skeet
C'est ce que j'ai trouvé (cependant, il peut ne pas être particulièrement efficace):
(boucle de concaténation de chaîne vs StringBuilder, plusieurs appels à GetParameters(), etc).
GetValue() ne fonctionne pas!
Je voudrais vraiment l'apprécier si vous démontré la bonne mise en œuvre de cette méthode. Je voudrais l'utiliser en conjonction avec le Diagnostic.Chronomètre de l'analyseur de performances de certaines méthodes en fonction des paramètres passés. Fondamentalement, la recherche de "la Méthode Un (paramA = 1, paramB = 2) ont eu 00:00:03.023 à exécuter.
Voir ma réponse, et Scott Muc.
OriginalL'auteur Ash