2009-05-25 4 views
0

Ce que je voudrais générer dans des corps de méthode:Comment générer automatiquement des appels d'enregistreur dans le code source en C#?

private void SomeMethod() 
{ 
Logger.Log("Entering SomeMethod."); 

// do stuff here 

Logger.Log("Exiting SomeMethod.") 
} 

est-il un outil qui peut générer pour moi? Si ce n'est pas le cas, et je voudrais en implémenter un moi-même, alors par où commencer, quelle bibliothèque devrais-je examiner pour reconnaître les méthodes dans le code source C#? Des expressions rationnelles simples devraient suffire?

Répondre

5

départ PostSharp

http://www.postsharp.org/

c'est un cadre-programmation d'aspect orienté. Il vous permettra de peindre vos méthodes avec des attributs qui exécuteront des enregistreurs, des contrôles de sécurité, etc.

1

Utilisez un cadre AOP pour cela.

Jetez un coup d'œil à Spring.NET ou Castle Dynamic Proxy.

La génération de code n'est généralement pas une bonne idée dans la plupart des cas.

5

Vous recherchez ici PostSharp - Programmation Orientée Aspect (AOP) pour .NET. Il vous permettra d'ajouter des gestionnaires qui seront exécutés avant le début et après la fin des méthodes arbitraires, de sorte que vous ayez seulement besoin de définir votre code de connexion en un seul endroit.

1

Si vous êtes intéressé par la génération de code, alors vous devriez vraiment faire une analyse complète (et correcte) de chaque fichier de code.

googling de « C de Sharp Parser » donne deux résultats possibles: Here And Here

Ensuite, tout ce que vous devez faire est de parcourir l'arborescence d'analyse syntaxique, et ajoutez votre méthode appelle au début et à la fin de chaque méthode.

Questions connexes