【Autofac打标签模式】Aspect拦截器 (2)

实现该抽象类的Before 和 After方法

image

1. 然后在被拦截方法的所在类上打上 【Aspect】标签;

2. 被拦截方法上打上 【TestHelloArround】标签

3. 被拦截方法需要有 virtual 关键字

方法的执行顺序为:

先执行TestHelloArround的Before方法

然后执行你的SayArround方法

再执行 先执行TestHelloArround的After方法

环绕拦截器的前置+后置的另外一种方式(更灵活)

注意:OnInvocation方法除了AspectContext参数以外 还有一个 AspectDelegate _next 参数, 如果只有一个环绕拦截器的话,那么这个参数就是被拦截方法的本体, 如果有多个环绕拦截器的话,那么最后一个就是被拦截方法的本体。

首先要自己写一个类继承拦截器PointcutAttribute(抽象标签类)

实现该抽象类的OnInvocation方法

1. 然后在被拦截方法的所在类上打上 【Aspect】标签;

2. 被拦截方法上打上 【TransactionInterceptor】标签

3. 被拦截方法需要有 virtual 关键字

方法的执行顺序为:

先执行TransactionInterceptor的OnInvocation方法

然后TransactionInterceptor的OnInvocation方法里面执行的 await _next(aspectContext); 就会执行被拦截方法TestInterceptor;

如果有多个环绕拦截器的话,如下图:

image

如上图 代码的执行顺序为:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzdgw.html