J'en suis arrivé au point où je veux accomplir deux tâches dans mon application ASP.NET. Ces deux tâches peuvent être réalisées à l'aide d'un cadre AOP, mais elles sont toutes deux de nature différente :
- Injection de dépendances pour mes contrôleurs et services
-
J'ai créé un attribut personnalisé
NotNullAttribute
et marquer les paramètres ou les propriétés de certaines méthodes avec elle au lieu de lancerArgumentNullException
si ces paramètres ou propriétés étaient nuls. Je veux que le cadre AOP vérifie ces attributs au moment de la compilation et ajoute des causes de rejet à la place. Voici un exemple ://original code that I write public void MyMethod([NotNull]string param1){ //do something }
.
//code actually being compiled - after AOF processing/weaning public void MyMethod(string patam1){ if(param1 == null){ throw new ArgumentNullException("param1"); } //do something }
Je veux donc un cadre de travail (qui ne doit pas nécessairement être AOP, mais je suppose qu'il devrait l'être) qui me permette de faire ces deux tâches simplement.
J'ai quelques exigences supplémentaires :
- faible encombrement, 1 ou 2 assemblages
- intégration à VS - Je veux juste appuyer sur
Ctrl+F5
à compiler et le cadre de travail fait le travail, injecte les dépendances, ajoute du code de levée d'exception. sans Je ne suis même pas au courant. Je ne veux pas exécuter la précompilation depuis la ligne de commande ou quoi que ce soit d'autre. - Pour la génération de code de lancement d'exception, j'aimerais écrire des classes. Comme les aspects réguliers. Pas de XML, pas de configuration (les conventions sont acceptables). Pour l'injection de dépendances, je préfère également les classes, mais le XML ou un autre fichier de configuration est acceptable, mais il doit être suffisamment simple pour être utilisé par quelqu'un qui ne connaît pas vraiment le XML et ne l'aime pas.
Existe-t-il un tel cadre ? S'il en existe d'autres, quels sont leurs avantages et inconvénients ?
EDIT : Ah oui, j'ai oublié un point très important : le cadre doit être gratuit.