Frage

benötige ich die Möglichkeit, eine Reihe von C # Dateien als vorkompilierte Schritt für ein Projekt zur Vorverarbeitung, den Beginn der Methoden zu erkennen und zu Beginn des Verfahrens erzeugten Code einzufügen, vor jedem vorhandenen Code. Ich bin jedoch mit einem Problem, das die Öffnung eines Verfahrens zu detektieren. Ich versuchte zunächst einen regulären Ausdruck übereinstimmen, aber mit viel zu viele Fehlalarme endete.

Ich würde verwenden Reflexion, aber die Method Klasse verweist nicht auf den Punkt in der ursprünglichen Quelle.

Bearbeiten : Was ich wirklich versuche, hier zu tun ist, um Unterstützung Vorbedingungen zu den Methoden, die Voraussetzung Code durch Attribute für das Verfahren bestimmt wird. Mein erster Gedanke ist, dass ich für den Beginn des Verfahrens aussehen könnte, und dann generierte Code einfügen für die Voraussetzungen der Handhabung.

Gibt es einen besseren Weg, dies zu tun? Ich bin offen für ein Visual Studio Addin zum Erstellen, wenn es sein muss.

Dies ist ein .NET 2.0-Projekt.

Prost

War es hilfreich?

Lösung

Mono.Cecil lassen Sie dies tun? sauber durch den generierten Code zu verändern, ohne in das erhalten eines C # Parser zu schreiben, die für Sie Kerngeschäft sein, ist unwahrscheinlich. ..

Havent getan alles von Folge mit Postsharp würde aber seine besser geeignet als Mono werden Erraten für so etwas wie Vorbedingungen oder AOP zu implementieren. Alternativ könnten Sie etwas AOPy mit einem DI-Container wie Ninject

Lage zu tun,

Aber natürlich ist die Anwendbarkeit dieser Idee Hängt - Sie didnt viel sagen, außer, dass Sie Code zu Beginn der Methoden einfügen wollen ...

EDIT: Im Lichte Ihren Wunsch zu tun Voraussetzungen ... -Code Contracts in .net 4 ist auf jeden Fall in diese Richtung.

Was für ein Werkzeug haben Sie? Was stimmt nicht mit ausgeliefert einem einzigen Mono.Cecil.dll DLL mit? So oder so etwas anderes als ein Parser ist das Werkzeug für den Job.

Andere Tipps

Ich bin sicher, es ist ein einfacher Weg, aber dies könnte eine gute Ausrede zu nehmen MGrammer für einen Spin.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top