Как я вижу здесь , Spring.NET использует динамическое проксирование на основе интерфейса для выполнения своей "AOP-сущности".Прокси-интерфейс на основе интерфейса работает как шаблон декоратора .Методы Task1
и Task2
не являются частями интерфейса, поэтому Spring.NET не может декорировать вызовы этих методов, поэтому не может применять любое поведение.
Изменение Task1
и Task2
public и добавление его в интерфейс не поможет ни в вашем сценарии, так как DoWork
вызывает this.Task1()
и this.Task2()
, где this
будет означать конкретный объект, а не прокси AOP.
Единственное решение в вашем сценарии - использовать другую технику AOP, либо динамическое проксирование на основе базового класса во время выполнения (я не знаю, позволяет ли это Spring.NET, это можно сделать, например, с Unity Interception ) или время компиляции (например, PostSharp ).