一个用于dependency injection的框架(在MVC应用程序中)和简单的AOP任务(使用属性)

我已经到了想要在我的ASP.NET应用程序中完成2个任务的地步,这两个任务都可以使用一些AOP框架来完成,但它们都具有不同的性质:

  1. 我的控制器和服务的dependency injection
  2. 我创建了自定义属性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)。