3

我正在尝试使用 Spring.NET 对 AOP 的支持来执行依赖注入/控制反转/面向方面的编程(对于大量流行语感到抱歉-也许我会发布一个单独的问题,要求某人澄清区别:)) .

具体来说,我想拦截一个递归方法调用,以便每次调用该方法时,都会调用 AOP 建议/拦截器。

除了第一个方法调用之外,Spring.Net 似乎没有拦截任何东西。我认为Spring.Net 每个实例只维护一个拦截器链,并且在第一个方法调用完成之前不再调用任何拦截器。

是否有人有任何关于让每个方法调用(包括递归调用)触发拦截器(建议)的信息?

如果有帮助,我可以提供代码/示例输出。谢谢!

4

3 回答 3

4

http://forum.springframework.net/showthread.php?t=5331

于 2009-01-26T13:22:31.373 回答
2

如果您使用的是基于代理的 AOP,那么这将不适用于递归方法调用。针对目标的第一次调用将被代理拦截,您的建议将运行。然后目标上的方法将被调用,随后的调用将留在目标类中,不知道代理。完成这项工作的唯一方法是实际修改您的字节码,以便类本身包含行为。

我实际上没有使用过 Spring.NET(只有 Spring 和 Java),所以不幸的是我不知道 .NET 世界中存在哪些类型的字节码编织选项。

于 2009-01-26T07:30:02.897 回答
0

我知道这本身不是 Spring.NET,但看看PostSharp。它为您提供了不依赖动态代理的编译时编织,并且可以处理递归方法调用。虽然配置略有不同...

于 2009-06-09T04:43:44.153 回答