Domanda

Ho bisogno la possibilità di pre-elaborazione di un certo numero di file C # come un passo prebuild per un progetto, di rilevare l'inizio di metodi, e inserire il codice generato all'inizio del metodo, prima di qualsiasi codice esistente. Sono, tuttavia, avendo problemi a rilevare l'apertura di un metodo. Inizialmente ho provato un'espressione regolare da abbinare, ma finito con troppi falsi positivi.

Vorrei utilizzare la riflessione, ma la classe MethodInfo non fa riferimento il punto della fonte originale.

Modifica : Quello che sto davvero cercando di fare qui è quello di sostenere condizioni preliminari sui metodi, che il codice pre-condizione è determinata dalla attributi sul metodo. Il mio primo pensiero è che ho potuto guardare per l'inizio del metodo, e quindi inserire il codice generato per gestire le pre-condizioni.

C'è un modo migliore per fare questo? Sono aperto alla creazione di un componente aggiuntivo di Visual Studio, se necessario.

Questo è un progetto NET 2.0.

Saluti

È stato utile?

Soluzione

Mono.Cecil vi permetterà di fare questo in modo pulito alterando il codice generato senza entrare in scrittura di un C # parser che è improbabile che sia il core business per voi. ..

havent fatto nulla di importante con PostSharp ma sarebbe indovinare il suo più appropriato di Mono per l'attuazione di qualcosa come condizioni precedenti o AOP. In alternativa si potrebbe essere in grado di fare qualcosa AOPy con un contenitore DI come Ninject

Ma, naturalmente, l'applicabilità di questa idea Dipende - voi non ha ancora dire molto diverso da quello che si voleva inserire il codice all'inizio di metodi di ...

EDIT: Alla luce della vostra voglia di fare precondizioni ... Code Contracts NET 4 è sicuramente in quella direzione.

Che tipo di uno strumento hai? Cosa c'è di sbagliato con avere una singola DLL Mono.Cecil.dll spedito? In entrambi i casi qualcosa di diverso da un parser è lo strumento per il lavoro.

Altri suggerimenti

Sono sicuro che ci sia un modo più semplice, ma questo potrebbe essere una buona scusa per prendere MGrammer per un giro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top