2008-10-09 8 views
2

J'essaie de consigner les paramètres d'une méthode en utilisant la réflexion. J'ai lu le earlier question posté à propos de ce problème sur StackOverflow qui m'a montré les API CLR.Valeur des paramètres de méthode par réflexion

Est-il possible, quelqu'un peut me diriger dans la bonne direction, comment vais-je obtenir les valeurs des paramètres passés en utilisant l'API?

Répondre

3

Fondamentalement, vous ne pouvez pas dans le code .NET "vanilla". Les paramètres ne sont que des variables locales et leurs valeurs ne peuvent pas être extraites sans entrer dans l'API du débogueur mentionnée dans l'autre thread.

Ce que vous pouvez pouvez faire est d'utiliser PostSharp pour insérer le code de journalisation. Je suggère d'aller dans cette voie avant de regarder l'API de débogage!

+0

Je ne pense pas que je puisse modifier une grande partie de l'architecture du code. Est-il possible d'injecter ce cadre juste pour obtenir les paramètres enregistrés> – sajidnizami

1

Si vous vous sentez aventureux, vous pouvez regarder la classe RealProxy dans System.Runtime.Remoting.Messaging. Il vous permet d'implémenter une classe proxy qui peut intercepter les appels à vos méthodes. Vous pouvez ensuite déconnecter les paramètres et transférer l'appel sur votre classe actuelle.

Il y aura un coup de performance pour cela, mais il vous donnera probablement ce que vous cherchez ...

0

@ Sean: Cela semble prometteur, est-il possible d'intercepter et d'obtenir des valeurs telles que qu'en WCF? Je sais que le journal de service contient déjà cette information, mais il est difficile de la parcourir, ce qui me pousse à chercher d'autres façons de consigner les méthodes et leurs paramètres.