2010-01-13 110 views
0

我正在嘗試爲特定方法創建攔截器,但我很難。我無法將某個方面綁定到特定的方法。大多數示例顯示我創建了faicures,但它仍然不起作用。任何人都可以給我一個如何做到這一點的例子嗎?如果可能,我更喜歡xml配置。Windsor Method攔截(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

是的。我發佈後,我意識到這個方法並不是虛擬的。無論如何,我仍然無法將某個方面綁定到特定的方法。我嘗試使用自定義屬性(裝飾我想要的方法),但方面被綁定到類而不是我想要的方法。

cofiguration(上面的xml)不能正常工作。

+1

我想你是誤解DynamicProxy。它不是一個真正的AOP框架,它是一個代理庫。我推薦這個教程:http://kozmic.pl/archive/2009/04/27/castle-dynamic-proxy-tutorial.aspx – 2010-01-13 17:12:29