Castle学习系列(十二)---Windsor和DynamicProxy实现AOP

来源:互联网 发布:windows 自带工具 u盘 编辑:程序博客网 时间:2024/05/16 19:42

        AOP就是可以在一个已有的类方法中动态地嵌入代码,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能。前提必须是被切入的类是通过IOC容器来控制的。

      Castle通过DynamicProxy来实现动态代理每一个切面方法均需要实现接口IInterceptor

     下面通过代码的方式来学习下AOP,新建一个切入类

<span style="font-size:14px;">public class LoggingInterceptor : IInterceptor    {        public void Intercept(IInvocation invocation)        {            Console.WriteLine("方法前调用");            try            {                invocation.Proceed();            }            catch (Exception)            {                Console.WriteLine("方法出错调用");                throw;            }            finally            {                Console.WriteLine("方法最后调用");            }        }    }</span>
即在原来的方法中加入TryCatch块,并记录日志。客户端调用的时候只需要在类上加标签:

<span style="font-size:14px;">[Interceptor(typeof(LoggingInterceptor))]    public class WenZhouCharge:ICharge    {    }</span>
前提是WenXhouCharge这个类是受Windsor IOC容器控制的。

这样在WenXhouCharge每个方法外面均会套上TryCatch并记录日志。

0 0
原创粉丝点击