首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#模拟拦截器的兑现

2013-03-19 
C#模拟拦截器的实现在SSH项目开发的过程中,Struts中大部分的功能是通过拦截器实现的。从编程思想上讲,拦截

C#模拟拦截器的实现

在SSH项目开发的过程中,Struts中大部分的功能是通过拦截器实现的。从编程思想上讲,拦截器也是AOP的实现。这里通过C#代码来模拟一个简单的拦截器。

首先来看一段代码,这段代码是一段错误代码,因为会陷入无穷的循环调用中


整个的调用过程中
Step1,index=0,调用Interceptor1的Intercept()方法,输出=======*1
Step2,调用actionInvoke的invoke方法
Step3,因为此时index=1,所以继续调用Interceptor2的Intercept()方法,输出======*2
Step4,在Interceptor2的Intercept()方法中,再次回到了actionInvoke的invoke方法,执行action.Execute()
Step5,接着执行Interceptor2的Intercept()中的输出命令,输出======*-2
Step6,回到上一层的调用中,回到Interceptor1的Intercept()中的输出命令,输出=======*-1
至此,这个过程结束。


总体上看,是从invoke()中开始执行到Interceptor1的时候,再次调用invoke方法,就会在Interceptor1的执行区间内,包裹一个Interceptor2执行。当Interceptor2完事后,会继续回到Interceptor1执行剩下的逻辑,这里是输出字符串。

热点排行