【问题标题】:Injecting advice to a recursive method in Spring.Net?向 Spring.Net 中的递归方法注入建议?
【发布时间】:2010-10-03 11:49:44
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# recursion aop spring.net


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多