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 :

[C#] Récupérer le nom de la méthode au sein de la méthode


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [C#] Récupérer le nom de la méthode au sein de la méthode
    Bonjour,

    Je crée un journal des erreurs suite à l'appel d'une méthode.
    Je veux joindre automatiquement au message le nom de la méthode qui génére l'erreur.

    Comment faire ?

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            private void MonTruc()
            {
                try
                {
                    int Oups = "je me trompe";
                }
                catch
                {
                    // /quel est le nom de cette méthode (MonTruc)?
                }
            }
    Merci.

  2. #2
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Tu passes en paramètre le nom de la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void MonTruc()
     {
       string methode = "MonTruc";
       try
         {
            int Oups = "je me trompe";
          }
        catch
          {
             MaMéthodeQuiAfficheMessage(methode);
           }
      }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Oui c'est une solution, c'est ce que je faisais jusqu'à présent.

    Mais ce que je veux c'est pouvoir récupérer le nom automatiquement pour ne pas avoir à l'ecrire pour toutes mes méthodes.

    Ainsi je peux faire un copier-coller du contenu du catch {} pour toutes mes méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                catch 
                {
                    string methode = trouver la le nom de la méthode
                    MaMéthodeQuiAfficheMessage(methode);
                }

  4. #4
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    oui je comprends mais ..... pas d'idées

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    J'ai trouvé une solution, mais elle est un peu tirée par les cheveux.

    En cas d'erreur il existe une variable string "StackTrace" qui contient entre autre le nom de la méthode.

    Je peux donc récupérer le nom ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    catch (Exception erreur)
    {
    string methode = erreur.StackTrace.Substring(erreur.StackTrace.IndexOf("...Nom du namespace..."),
     erreur.StackTrace.LastIndexOf("(") - erreur.StackTrace.IndexOf("...Nom du namespace..."));
     
    }
    Cela marche parfaitement, mais je ne trouve pas ça très satisfaisant.

    J'attends quelque chose de mieux, à défaut je mettrais "Résolu".

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Tu peux essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.Diagnostics.StackFrame sf = new System.Diagnostics.StackFrame();
    string s = sf.GetMethod().Name;

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    En effet c'est plus rapide.
    Et en plus je peux ajouter le nom de la class auquelle la méthode appartient avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    System.Diagnostics.StackFrame sf = new System.Diagnostics.StackFrame();
    string NomMethode = sf.GetMethod().Name;
    string NomClass = sf.GetMethod().ReflectedType.FullName;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le nom d'une classe et d'une méthode
    Par hanubis37 dans le forum Langages
    Réponses: 2
    Dernier message: 21/11/2014, 11h50
  2. Récupérer le nom de la méthode en cours
    Par weabow dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 20/05/2013, 06h27
  3. récupérer le nom d'une méthode
    Par awalter1 dans le forum Général Python
    Réponses: 13
    Dernier message: 30/01/2012, 08h53
  4. Récupérer le nom d'une méthode
    Par artmicro dans le forum Langage
    Réponses: 8
    Dernier message: 30/06/2011, 11h12
  5. Récupérer le nom de la méthode appelante
    Par benratti dans le forum Langage
    Réponses: 6
    Dernier message: 19/09/2007, 09h55

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