一个用于dependency injection的框架(在MVC应用程序中)和简单的AOP任务(使用属性)
我已经到了想要在我的ASP.NET应用程序中完成2个任务的地步,这两个任务都可以使用一些AOP框架来完成,但它们都具有不同的性质:
- 我的控制器和服务的dependency injection
-
我创建了自定义属性
NotNullAttribute
并用它标记了一些方法的参数或属性,而不是抛出ArgumentNullException
如果这些参数或属性为null。 我希望AOP框架在编译时检查这些属性,并添加throw原因。 示例如下://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 }
所以我想要框架(甚至不一定是AOP,但我想它必须是),这将允许我简单地完成这两项任务。
我有一些额外的要求:
- 占地面积小,1或2个组件
- 集成到VS – 我只想按
Ctrl+F5
进行编译,框架可以正常工作,注入依赖项,添加exception抛出代码, 而我甚至不知道它。 我不想从命令行或类似的东西运行预编译。 - exception抛出代码生成我喜欢写类。 像常规方面一样。 不是XML,没有配置(可以接受约定)。 对于dependency injection,我也更喜欢类,但XML或其他配置文件是可以接受的,但它应该足够简单,以供那些不真正了解XML并且不喜欢它的人使用。
有一些这样的框架吗? 如果还有更多的优点/缺点?
编辑:哦,是的,我忘记了非常重要的想法:框架应该是免费的。
我对此没有任何亲身经历,但我认为Linfu符合您的描述。
除此之外,你可以通过动态拦截从DI容器中获得类似AOP的行为 – 这是一个例子: http : //blog.ploeh.dk/2010/09/20/InstrumentationWithDecoratorsAndInterceptors.aspx
以下DI容器支持开箱即用的拦截:
- 温莎城堡
- 统一
- Spring.NET
PostSharp可以使用纯AOP(不含DI)。