Я хочу перехватить вызов метода перед выполнением с помощью 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). Есть идеи, что не так?