2010-01-13 3 views
0

Я пытаюсь создать перехватчики для определенных методов, но мне тяжело. Я не могу привязать аспект к определенному методу. Я создаю примеры, демонстрирующие большинство примеров, но он по-прежнему не работает. Может ли кто-нибудь дать мне пример того, как это сделать? Я предпочитаю xml conifguration, если это возможно.Перехват метода Windsor (AOP)

Другой вопрос, у меня есть этот код:

<component id="SampleAspect" 
      service="WindsorSample.Aspect.SampleAspect, WindsorSample" 
      type="WindsorSample.Aspect.SampleAspect, WindsorSample"> 
</component> 

<component id="HtmlTitleRetriever" 
      type="WindsorSample.DummyObject, WindsorSample"> 
    <parameters> 
    <interceptors> 
     <interceptor>${SampleAspect}</interceptor> 
    </interceptors> 
    </parameters> 
</component> 

Тогда ...

IWindsorContainer container = new WindsorContainer(new XmlInterpreter()); 
IDummyObject retriever = container.Resolve<DummyObject>(); 
retriever.SomeMethod(); 

Этот аспект не выполняется. Я что-то упускаю? Я использую неправильный подход для aop?

Благодаря

ответ

2

Вы можете только перехватывать виртуальный метод, вы знаете, что, правильно?

2

Да. Я понял, что метод не был виртуальным после того, как я опубликовал. Во всяком случае, я все еще не могу привязать аспект к определенному методу. Я пробовал использовать пользовательские атрибуты (украшая методы, которые я хочу), но аспект привязывается к классу не к методу, который я хочу.

Софигурация (xml выше) также не работает.

+1

Я думаю, что вы не понимаете DynamicProxy. На самом деле это не AOP-структура, это прокси-библиотека. Я рекомендую этот учебник: http://kozmic.pl/archive/2009/04/27/castle-dynamic-proxy-tutorial.aspx –

Смежные вопросы