2010-01-13 87 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