gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:08:29 26 4
gpt4 key购买 nike

我已经到了我想在我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com