2009-05-25 5 views
0

Was möchte ich in Methodenrümpfe generieren:Wie automatisch Logger Aufrufe in Quellcode in C# generieren?

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

// do stuff here 

Logger.Log("Exiting SomeMethod.") 
} 

Gibt es ein Tool, das das für mich generieren? Wenn nicht, und ich möchte selbst eine implementieren, wo soll ich anfangen, welche Bibliothek sollte ich für die Erkennung von Methoden in C# Quellcode suchen? Einfache Regexes sollten ausreichen?

Antwort

5

Check-out Postsharp

http://www.postsharp.org/

Dies ist ein Aspekt-orientierte Programmierung Rahmen. Es ermöglicht Ihnen, Ihre Methoden mit Attributen zu malen, die Logger, Sicherheitschecks usw. ausführen.

1

Verwenden Sie AOP-Framework dafür.

Werfen Sie einen Blick auf Spring.NET oder Castle Dynamic Proxy.

Code-Generierung ist in den meisten Fällen keine gute Idee.

5

Sie suchen definitiv nach PostSharp hier - Aspect Oriented Programming (AOP) für .NET. Es erlaubt Ihnen, Handler hinzuzufügen, die vor dem Start und nach dem Ende beliebiger Methoden ausgeführt werden, so dass Sie effektiv nur Ihren Logging-Code an einer Stelle definieren müssen.

1

Wenn Sie Code generieren wollen, dann sollten Sie wirklich eine vollständige (und ordnungsgemäße) Analyse jeder Code-Datei machen.

Einige googeln von „C Sharp Parser“ ein paar mögliche Ergebnisse gibt: Here And Here

Dann alles, was Sie tun müssen, ist der Parsing-Baum zu durchqueren, und fügen Sie Ihre Methode am Anfang ruft und Ende von jeder Methode.