如上是我们定义的拦截器基类,我们想要达到的目标是,只要继承该基类,并覆写InterceptAsync 方法即可实现具有特定功能的拦截类,而容器会自动代理到该拦截类,实现拦截。

这里要感谢
https://github.com/stakx/DynamicProxy.AsyncInterceptor 的作者,该库采用
MIT 的许可使用协议,我们可以直接参考使用。

接下来,是重头戏,考虑到易用性,我们以 Microsoft.Extension.DependencyInjection 为基本库,实现一个扩展类,用于实现拦截器功能。

代码如下: