我已经到了我想在我的 ASP.NET 应用程序中完成 2 个任务的地步,这两个任务都可以使用一些 AOP 框架来完成,但它们的性质不同:
- 我的 Controller 和服务的依赖注入(inject)
我创建了自定义属性
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/