在Spring.Net中向一个递归方法注入建议?

我正在尝试使用Spring.NET对AOP的支持来进行控制/面向方面编程的dependency injection/反转(对于大量的流行语感到抱歉 – 也许我会发布一个单独的问题,要求某人澄清差异:)) 。

具体来说,我希望拦截一个递归方法调用,这样每次调用该方法时,都会调用AOP通知/拦截器。

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

有没有人有任何关于获取为每个方法调用触发的拦截器(建议)的信息,包括递归调用?

我可以提供代码/示例输出,如果这有用的话。 谢谢!

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

如果您使用基于代理的AOP,那么这将不适用于递归方法调用。 对目标的第一次调用将被代理拦截,您的建议将会运行。 然后将调用目标上的方法,并且后续调用将保留在目标类中,而不知道代理。 实现此function的唯一方法是实际修改字节码,以便类本身包含该行为。

我实际上没有使用过Spring.NET(只有Spring with Java),所以我不知道.NET .NET中存在什么类型的字节码编织选项。

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