Autofac Method-Level DynamicProxy 接口、类中的方法级别代理

  国内国外各种找文档,根据方法或类上的特性,通过autofac扫描类注册服务时自动连接到对应的拦截器。

相关Autofac 动态代理基础可以参考园里其他博客。

如何实现方法级别(接口、类中的方法)的动态代理 

  参考代码,我的仓库 https://github.com/qiqiqiyaya/Autofac-Method-Level-DynamicProxy ,记得star!!!

  autofac 相关文章 https://autofac.readthedocs.io/en/latest/advanced/interceptors.html

  需要安装的包

  

  部分代码借鉴ABP框架

  直接进入正题:

     

    1.需要创建异步拦截器IAsyncInterceptor ,由Castle.Core.AsyncInterceptor包提供。

      

 

       

    2.创建一个功能类似适配器的类,该类作用 “Intercepts method invocations and determines if is an asynchronous method.”  适配用于异步的 异步拦截器(其实异步拦截器可适用于同步或异步方法)。

      

        在ABP源码里面copy的,哈哈哈

    3.创建一个代理生成器钩子,其中ShouldInterceptMethod决定哪些方法应该被拦截。

      

    4.使用autofac注册服务时启用拦截器(注意“EnableClassInterceptors”与“EnableInterfaceInterceptors”区别)

      创建一个测试服务

      

 

      实现类

      

    注册服务:

      

      5.只有虚方法、接口中定义的方法才会被动态代理

 

    

posted @ 2021-12-27 23:12  youliCC  阅读(108)  评论(0编辑  收藏  举报