我已经到了想要在我的ASP.NET应用程序中完成2个任务的地步,这两个任务都可以使用一些AOP框架来完成,但它们都是不同的性质:
我创建了自定义属性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
}
所以我想要框架(甚至不一定是AOP,但我想它必须是),这将允许我简单地完成这两项任务。
我有一些额外的要求:
Ctrl+F5
进行编译,框架可以正常工作,注入依赖项,添加异常抛出代码,而不用我甚至不知道它。我不想从命令行或类似的东西运行预编译。是否有一些这样的框架?如果还有更多的优点/缺点?
编辑:哦,是的,我忘记了非常重要的想法:框架应该是免费的。
答案 0 :(得分:5)
我没有任何个人经验,但我认为Linfu符合您的描述。
除此之外,你可以通过动态拦截从DI容器中获得类似AOP的行为 - 这是一个例子:http://blog.ploeh.dk/2010/09/20/InstrumentationWithDecoratorsAndInterceptors.aspx
以下DI容器支持开箱即用的拦截:
纯AOP(不含DI)可与PostSharp一起使用。