none
Reflexion Listé les parametre d'une fonction et leur valeur RRS feed

  • Question

  • Bonjour,

    J'ai fait une fonction pour le debugage, elle me liste quelle que information,

    je souhaiterai recuperer la liste des parametre (ce que je fait deja) mais avec la liste des valeurs (pour fair Nom = Valeur)

    Est ce que vous auriez une piste ?

    Voici une fonction de test pour presenter mon probleme, je souhaiterai avoir pNom = sa valeur et pAge = Sa valeur.


        Public Function Test(ByVal pNom As String, ByVal pAge As Integer)

            Try

                Throw New Exception("Test")

            Catch ex As Exception

                Dim lMessageError As String = ""

                lMessageError += "<fx>" & System.Reflection.MethodBase.GetCurrentMethod().Name & "</fx>"
                lMessageError += "<FullName>" & System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.FullName & "</FullName>"
                lMessageError += "<name>" & System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.Name & "</name>"
                lMessageError += "<Namespace>" & System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.Namespace & "</Namespace>"

                For Each lAr As System.Reflection.ParameterInfo In System.Reflection.MethodBase.GetCurrentMethod.GetParameters

                    lMessageError += "<param" & lAr.Position & ">" & lAr.Name & " = " & "</param" & lAr.Position & ">" '& CallByName, lAr.Name, CallType.Get)

                Next

                MsgBox(lMessageError)

            End Try

        End Function

    jeudi 1 avril 2010 12:32

Réponses

  • Bonjour,

    a priori cela ne sera pas possible via reflection car celle ci utilise les metadata de l'assembly.

    Malheureusement System.Diagnostics.StackFrame ne semble pas être une solution non plus...( voir ici )

    A des fins de log le plus simple sera de passer toi même le nom et la valeur...

    Cordialement

    Un post msdn que tu pourras trouver utile :How to get the parameter value using reflection

    Cordialement

     

    vendredi 2 avril 2010 09:12
    Modérateur

Toutes les réponses

  • Bonjour,

    a priori cela ne sera pas possible via reflection car celle ci utilise les metadata de l'assembly.

    Malheureusement System.Diagnostics.StackFrame ne semble pas être une solution non plus...( voir ici )

    A des fins de log le plus simple sera de passer toi même le nom et la valeur...

    Cordialement

    Un post msdn que tu pourras trouver utile :How to get the parameter value using reflection

    Cordialement

     

    vendredi 2 avril 2010 09:12
    Modérateur
  • Bonjour,

     

    merci, sa m'evite de continuer a chercher,

    effectivement si je n'es pas d'autre solution je ferai cela, mais j'aurai préférer avoir un code générique sans avoir à rien modifier,

    j'aurai voulu fair ensuite un snippet du code, et cela me permettait de n'avoir rien a ajouté, dans le cas precis, si je change le nombre de parametre je doti forcement prendre le temps d'aller modifier mon log.

     

    merci quand meme de t'etre pancher sur le probleme.

    Cordialement

    Sébastien

    vendredi 2 avril 2010 20:23