实现该抽象类的Before 和 After方法
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;
如果有多个环绕拦截器的话,如下图:
如上图 代码的执行顺序为: