我想在使用 spring.NET 执行之前拦截一个方法调用。假设要拦截的类/方法是:
public class Listener
{
public void Handle()
{
// method body
}
}
这就是我所做的(假设所有代码都在名为 Example 的命名空间中):
1.创建建议:
public class MyAopAdvice : IMethodBeforeAdvice
{
public void Before(MethodInfo method, object[] args, object target)
{
// Advice action
}
}
2.更新了我的spring xml配置:
<object id="myAopAdvice" type="Example.MyAopAdvice" />
<object id="listener" type="Spring.Aop.Framework.ProxyFactoryObject">
<property name="Target">
<object type="Example.Listener" autowire="autodetect"/>
</property>
<property name="InterceptorNames">
<list>
<value>myAopAdvice</value>
</list>
</property>
</object>
出于某种原因,如果我在其中设置断点,我的 Advice 代码不会受到影响。但是,如果我在我的建议中添加一些控制台日志记录语句,它们似乎已被记录,但不是在适当的时间(即,在调用 Listener.Handle() 之前)。
我愿意打赌我的配置是错误的(这一次,我可能错过了一种方法来告诉配置只监听 Handle 方法调用,而不是 Listener 可能拥有的任何其他方法)。有什么想法有什么问题吗?