Question

Je requiers la capacité de prétraiter un certain nombre de fichiers C # comme une étape de pré-construits pour un projet, détecter le début des méthodes, et insérer le code généré au début de la méthode, avant tout code existant. Je, cependant, avoir un problème de détection de l'ouverture d'une méthode. J'ai essayé d'abord une expression régulière pour correspondre, mais a fini avec beaucoup trop de faux positifs.

J'utiliser la réflexion, mais la classe MethodInfo ne fait pas référence au point dans la source d'origine.

EDIT : Ce que je suis vraiment en train de faire ici est de soutenir les conditions préalables sur les méthodes, ce code condition préalable étant déterminée par les attributs sur la méthode. Ma première pensée étant que je pouvais chercher le début de la méthode, puis insérez le code généré pour la manipulation des conditions préalables.

Y at-il une meilleure façon de le faire? Je suis ouvert à la création d'un Visual Studio Addin si besoin est.

Ceci est un projet .NET 2.0.

Vive

Était-ce utile?

La solution

Mono.Cecil vous permettra de le faire proprement en modifiant le code généré sans entrer dans l'écriture d'un analyseur C # qui est peu susceptible d'être le cœur de métier pour vous. ..

nai rien fait de conséquence avec PostSharp mais serait devinant son plus approprié que Mono pour mettre en œuvre quelque chose comme les conditions préalables ou AOP. Sinon, vous pourriez être en mesure de faire quelque chose AOPy avec un conteneur DI comme Ninject

Mais bien sûr, l'applicabilité de cette idée dépend - tu na pas dire que beaucoup d'autres que vous vouliez insérer du code au début des méthodes ...

EDIT: À la lumière de votre désir de faire des conditions préalables ... contrats en .net 4 est certainement dans cette direction.

Quelle sorte d'un outil avez-vous? Ce qui est mal à avoir un seul Mono.Cecil.dll DLL livré? Quoi qu'il en soit autre chose qu'un analyseur est l'outil pour le travail.

Autres conseils

Je suis sûr qu'il ya un moyen plus facile, mais cela pourrait être une bonne excuse pour prendre MGrammer pour un spin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top