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

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

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

  1. 我的 Controller 和服务的依赖注入(inject)
  2. 我创建了自定义属性 NotNullAttribute 并用它标记了一些方法的参数或属性,而不是在这些参数或属性为 null 时抛出 ArgumentNullException。我希望 AOP 框架在编译时检查这些属性并添加抛出原因。示例如下:

    //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 进行编译,框架可以正常工作,注入(inject)依赖项,添加异常抛出代码我什至不知道它。我不想从命令行或类似的东西运行预编译。
  • 对于异常抛出代码生成,我想编写类。像常规方面。不是 XML,没有配置(约定是可以接受的)。对于依赖项注入(inject),我也更喜欢类,但 XML 或其他配置文件是可以接受的,但它应该足够简单,以便那些不太了解 XML 且不太喜欢它的人使用。

有这样的框架吗?如果还有更多,它们的优缺点是什么?


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

最佳答案

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

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

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

纯 AOP(无 DI)可以用 PostSharp 实现.

关于c# - 一个用于依赖注入(inject)(在 MVC 应用程序中)和简单 AOP 任务(使用属性)的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5442231/

相关文章:

c# - 将多维数组元素转换为不同类型

c# - MVC 将 PartialViewResult 渲染为字符串

c# - MySqlDataReader C# 中的 HasRows 属性总是返回真值?

.net - WCF 服务端点 localhost 混淆

c# - 从数据表中删除重复条目的最佳方法

c# - 在 QueryExpression 中包含 OptionSetValue

c# - 使用 ASP.NET Core 3 流式传输视频

asp.net-mvc - 类库中的 Controller 和 View

javascript - Bootstrap类不适用于布局设计

c# - Silverlight 3 中 TypeDescriptor 的替代品?