Я проверил ваш код, но не смог найти никаких проблем.
почему бы вам не попытаться поймать Throwable и проверить его отладкой?
try { /* code */ }
catch (Throwable t) { t.printStackTrace(); }
Я думаю, что замок Dynamic Proxy является предпочтительным решением, если динамический перехват может обработать Ваши потребности. Эта платформа используется внутренне большим количеством других платформ, которые хотят предложить возможности AOP. Как правило, большинство существующих контейнеров МОК теперь обеспечивает некоторые динамические механизмы перехвата (Spring.NET, замок Windsor, StructureMap, и т.д.), Если Вы уже работаете с контейнером МОК, возможно, могло бы быть легче посмотреть на то, что он предлагает.
, Если динамический перехват не может обратиться к Вашим потребностям (ткущий запечатанный класс, прервав невиртуальный вызов, и т.д.), то Вы, конечно, хотите статическое переплетение. PostSharp является ссылкой в этом домене.
Примечание, что это также существует Linfu, который может использоваться для усиления обоих видов AOP.
"Лучше всего" субъективно.
Первый, составьте список функций, в которых Вы нуждаетесь, Ваша архитектура, и т.д. Тогда ищете опции, которые делают то, в чем Вы нуждаетесь, не представляя ненужную сложность. Например, несколько - ориентированный интерфейс: Ваш код в настоящее время ориентированный интерфейс? В противном случае PostSharp мог бы быть лучшим выбором (сотканный в исходные классы). Но конечно, PostSharp не может быть настроен во времени выполнения... лошади для курсов.
Я не знаю о лучшем, существует много платформ и недостаточно часов в день для попытки их всех.
я действительно использовал PostSharp и был приятно удивлен, как легкий это должно начать с ним.
я также изучил AOP с замком Windsor и Spring. Сеть, подход отличается (время выполнения по сравнению со временем компиляции). Смешивание AOP и МОК, кажется, имеет смысл. Когда Вы еще не используете одну из этих платформ, это - намного больше работы, чтобы начать, но сделать не позволенный, которые останавливают Вас.
Для новых проектов теперь я, вероятно, использовал бы замок Windsor, но это главным образом, потому что я также хотел бы использовать МОК. Если бы я должен был быстро реализовать AOP в существующую кодовую базу, то я использовал бы PostSharp.