IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Enumerer la liste des parametres d'une fonction


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut Enumerer la liste des parametres d'une fonction
    Bonjour,

    J'aimerai savoir si il existe un methode simple pour lister les parametres à l'interieur d'une fonction. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void MyFunc( int foo, string bar )
    {
        foreach( object param in params? )
        { ... }
    }
    Merci

  2. #2
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Tu peux obtenir les paramètres d'une méthode en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                MethodInfo methodInfo = this.GetType().GetMethod("MaMethod");
                methodInfo.GetParameters();
    Et tu obtiens des ParameterInfo.
    En explorant la System.Reflection, tu trouveras ce qu'il te faut.

  3. #3
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Merci pour la rapidité de ta reponse. Le nouveau probleme est de retrouver la valeur du parametre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        public class Toto
        {
            public void Function(int a, string b)
            {
                MethodInfo minfo = typeof(Toto).GetMethod("Function");
     
                ParameterInfo[] pi = minfo.GetParameters();
                foreach (ParameterInfo item in pi)
                {
                    Debug.Print(item.Name + " " + item.DefaultValue?);
                }
            }
        }

  4. #4
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Tu ne trouveras effectivement pas la valeur via ParameterInfo. Peut-être y a-t-il un moyen via StackTrace. Je n'ai pas la réponse, si j'ai le temps j'essaierai de trouver une solution...

  5. #5
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Pas beaucoup d'espoir... (voir ici)

  6. #6
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    D'apres ce forum il ne serait possible de faire cela que dans le .Net 3.0
    http://forums.microsoft.com/MSDN/Sho...44800&SiteID=1

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    j'ai une question...

    Quelle est la finalité, car les paramètres d'appel dans la fonction... mine de rien tu les connais c'est toi qui les a définis...
    la seule raison que je vois à cela serait d'avoir un nombre de paramètres variable comme le permet Console.WriteLine() par exemple.

    Dans ce cas l'écriture de ton profil est

    typeRetour MaFonction(int foo, params object[] list)

    ici foo est un paramètre obligatoire.
    list récupère sous forme d'un array d'object les différents paramètres fournis à la fonction.
    Il n'est pas difficile sur chacun d'obtenir son type s'il la référence n'est pas nulle.
    => monObjet.GetType()

  8. #8
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Donc pour information j'aimerai rajouter du Log dans mon application. Par exemple lister tout les appels de fonctions et afficher la valeur des arguments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void MyFunc( int foo, string bar )
    {
        Log(); //Ceci ajouterai une ligne en automatique
        //A la place de :
        Log.WriteLine( string.format("Class::MyFunc(int foo={0}, string bar={1})", foo, bar );
        ...
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/02/2015, 08h21
  2. Réponses: 8
    Dernier message: 27/07/2010, 19h04
  3. oublier volontairement des parametres dans une fonction
    Par Joe Le Mort dans le forum Langage
    Réponses: 2
    Dernier message: 23/08/2006, 16h12
  4. [Ajax] probleme de récupération des paramètre d'une liste déroulante
    Par cyberdevelopment dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 03/08/2006, 18h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo