2010-01-07 5 views
2

Je prévois de mettre un appel à MethodBase.GetCurrentMethod() au début de la plupart des méthodes (pour l'enregistrement d'information), mais étant donné que cela présenterait un surcoût élevé, il serait bon si un attribut conditionnel pourrait être utilisé utilisé comme:Est-il possible d'orner une ligne de code avec un attribut conditionnel? (Ou quelque chose de similaire)

#define LogMethodNames 

où ...

[Conditional("LogMethodNames")] 

a été mis au-dessus de chaque appel de ligne GetCurrentMethod(), comme:

void DoStuff() 
{ 
    [Conditional("LogMethodNames")] 
    logger.CurrentMethod = MethodBase.GetCurrentMethod(); 

    // stuff done here 
} 

... donc au moins, il pourrait être exclu des versions de versions.

Est-ce quelque chose le long de ces lignes possibles?

Merci!

Gregg

PS Je voudrais essayer moi-même maintenant, mais pour une raison que je ne pouvais pas obtenir les attributs de travailler en raison d'une erreur de compilation. Doh.

PPS Si cela ne peut pas fonctionner, je créerais une méthode qui attribue à l'objet de l'enregistreur, comme:

void SetCurrentMethod(MethodBase currentMethod) 
{ 
    logger.CurrentMethod = currentMethod; 
} 

et utilisation:

void DoStuff() 
{ 
    [Conditional("LogMethodNames")] 
    SetCurrentMethod(MethodBase.GetCurrentMethod()); 

    // stuff done here 
} 

Toutes les pensées ?! Merci :-)

Répondre

1

Vous êtes à proximité - vous devez définir l'attribut Conditional sur la méthode elle-même:

[Conditional("LogMethodNames")] 
void SetCurrentMethod(MethodBase currentMethod) 
{ 
    logger.CurrentMethod = currentMethod; 
} 

Pour plus d'informations s'il vous plaît voir The Conditional attribute:

L'attribut conditionnel permet définition de méthodes conditionnelles. L'attribut conditionnel indique une condition en testant un symbole de compilation conditionnel . Les appels à une méthode conditionnelle sont soit inclus ou omis selon que ce symbole est défini au point de l'appel . Si le symbole est défini, l'appel est inclus; sinon, l'appel (y compris l'évaluation des paramètres de l'appel) est omis.

+0

Thx. J'ai besoin d'élargir ma réflexion, lol. Bonne chance avec 50K, .1 pour aller ... – MrGreggles

Questions connexes