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

Langages Discussion :

Récupérer le nom d'une classe et d'une méthode


Sujet :

Langages

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 57
    Points
    57
    Par défaut Récupérer le nom d'une classe et d'une méthode
    Bonjour à tous,

    Je me suis fait une petite bibliothèque pour sauvegarder des logs.
    Dedans, j'ai une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static void TraceInfos(string trace)
    {
         myFileTrace.WriteLog(trace);
    }
    J'aimerai, à l'intérieur de cette méthode, pouvoir récupérer le nom de la classe et le nom de la méthode qui l'a appelée.
    Mais, je ne voudrais pas à avoir à passer le nom de la classe et celui de la méthode en paramètre.
    Ce qui donnerai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static void TraceInfos(string trace)
    {
         string classname =???;
         string methodname = ???;
         string messageTrace = string.Format("Class: {0}{1}Method: {0}{2}Message: {3}",Environnement.NewLine,classname,methodname,trace);
         myFileTrace.WriteLog(messageTrace);
    }
    Est-ce que quelqu'un à une idée sur comment faire ?

    Merci à tous d'avance.

  2. #2
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Bonjour,

    tu peux passer par la pile d'appel et la reflexion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var methodInfo = new StackFrame(1).GetMethod();
    En revanche tu va vite péter les performances, cette méthode est plutôt couteuse.

    Il existe les CallerInformations qui eux en revanche ne te couterons quasiment rien.

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 57
    Points
    57
    Par défaut
    Très bon conseil, je ne savais pas que StackFrame pété les performances.
    Les Caller Information sont très bien. C'est exactement ce que je cherchais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    using System.Runtime.CompilerServices;
     
    public static void TraceInfos(string trace,
    			[CallerMemberName]  string memberName = "",
    			[CallerFilePath]  string sourceFilePath = "",
    			[CallerLineNumber]  int sourceLineNumber = 0)
    {
        string messageTrace = string.Format("MethodeName: {1}{0}FileName: {2}{0}LineNumber: {3}{0}Message:	{4}",
    					Environment.NewLine,
    					memberName,
    					sourceFilePath,
    					sourceLineNumber,
    					trace);
         myFileTrace.WriteLog(messageTrace);
    }

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

Discussions similaires

  1. Instanciation d'une classe fille depuis une classe mère
    Par khaled-benloucif dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2009, 23h59
  2. Réponses: 7
    Dernier message: 25/08/2008, 16h13
  3. Réponses: 2
    Dernier message: 02/02/2008, 07h37
  4. Réponses: 27
    Dernier message: 03/01/2008, 11h07
  5. Réponses: 8
    Dernier message: 20/07/2007, 14h28

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