技术开发 频道

在Castle IOC容器中使用AspectSharp


【IT168技术文档】

  在Castle的官方falicicies库中,提供了AspectSharp Facility来让我们可以很简单在IOC中使用A#。我把使用方法放在最后,题目说了是要全面剖析这个facility的原理,借助这次分析让我们对 Castle IOC中的Falicity编写有更深的了解。

  编写一个facility之前,最重要的就是要明确这个falicity的目的。需要调用 engine.WrapClass或者engine.WrapInterface来对目的对象包装,那么得出这个facility的目的就是:当用户向IOC容器请求组件的时候,根据aop的配置自动包装组件再交给客户使用。

  明白了需求,那么就开始分析吧:
protected override void Init() { if (FacilityConfig == null) return; // 第一步 RegisterAspectEngine(); // 第二步 RegisterInterceptor(); // 第三步 Kernel.ProxyFactory = new AopProxyFactory(); // 第四步 _engine = (AspectEngine) Kernel[ typeof(AspectEngine) ]; // 第五步:向IOC里面加入任何组件的时候,OnComponentRegistered会回调 Kernel.ComponentRegistered += new ComponentDataDelegate(OnComponentRegistered); }
0
相关文章