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

时间:2011-03-26 12:11:59

标签: c# .net asp.net-mvc dependency-injection aop

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

  1. 我的控制器和服务的依赖注入
  2. 我创建了自定义属性NotNullAttribute,并使用它标记了某个方法的参数或属性,而不是在这些参数或属性为null时抛出ArgumentNullException。我希望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
    }
    
  3. 所以我想要框架(甚至不一定是AOP,但我想它必须是),这将允许我简单地完成这两项任务。

    我有一些额外的要求:

    • 占地面积小,1或2个组件
    • 集成到VS - 我只想按Ctrl+F5进行编译,框架可以正常工作,注入依赖项,添加异常抛出代码,而不用我甚至不知道它。我不想从命令行或类似的东西运行预编译。
    • 用于异常抛出代码生成我喜欢写类。像常规方面一样。不是XML,没有配置(可以接受约定)。对于依赖注入,我也更喜欢类,但XML或其他配置文件是可以接受的,但它应该足够简单,以供那些不真正了解XML并且不喜欢它的人使用。

    是否有一些这样的框架?如果还有更多的优点/缺点?


    编辑:哦,是的,我忘记了非常重要的想法:框架应该是免费的。

1 个答案:

答案 0 :(得分:5)

我没有任何个人经验,但我认为Linfu符合您的描述。

除此之外,你可以通过动态拦截从DI容器中获得类似AOP的行为 - 这是一个例子:http://blog.ploeh.dk/2010/09/20/InstrumentationWithDecoratorsAndInterceptors.aspx

以下DI容器支持开箱即用的拦截:

纯AOP(不含DI)可与PostSharp一起使用。