2010-01-27 5 views
2

J'ai vu des messages plus anciens sur SO, à propos d'un an, ce qui signifierait qu'ils ne couvrent pas vraiment .NET 4 ou peut-être même 3,5 sur ce sujet. Alors voilà.Utilisation de Reflection pour analyser les paramètres et leurs valeurs

Si vous avec la réflexion deviez chercher les paramètres de la méthode actuelle

ParameterInfo[] methodParams = MethodInfo.GetCurrentMethod().GetParameters(); 

Looping par chaque paramètre vous permettra de récupérer les paramètres nom cependant, il n'y a qu'un « DefaultValue » que je suppose est là parce que des nouveaux paramètres dynamiques dans .NET 4.

Cependant, ma question est; Est-ce qu'il n'est toujours pas possible d'obtenir les valeurs de paramètres de la méthode sans creuser dans l'API du débogueur?

Je sais qu'il pourrait y avoir un défaut de conception si vous avez même besoin d'envisager d'utiliser ceci.

+0

Je pense, j'ai répondu à une question très similaire il n'y a pas si longtemps: http://stackoverflow.com/questions/2062883/is-there-a-way-to-enumerate-passed-method-paramters/2066654# 2066654 Comme vous l'avez dit, non sans défauts de conception, cependant. –

Répondre

3

Il n'est pas possible d'obtenir les valeurs de paramètre actuelles sans utiliser l'API Profiling.

MethodInfo Les objets sont par méthode, pas par appel. Il n'y a aucun moyen de connecter un MethodInfo avec un cadre de pile donné.

En outre, dans les versions Release, les locals de paramètres peuvent être optimisés, de sorte que les valeurs existent nécessairement.

La propriété DefaultValue peut être non null dans les paramètres VB, qui prend déjà en charge les valeurs par défaut.

+0

Y a-t-il une perte de performance énorme en faisant cela? Avez-vous besoin de compiler le projet pour le débogage? –

+0

Une énorme perte de performance à faire quoi? – SLaks

+0

Utilisation de l'API Profiling pour obtenir la valeur et ne pas compiler en mode release. On dirait que ça ne vaut pas le coup. –

Questions connexes