zoukankan      html  css  js  c++  java
  • .Net Core下基于Emit的打造AOP

    之前的基于DispatchProxy的AOP组件,实现了属性注入,但是这个依旧有很多限制

    比如不支持构造器注入,继承DispatchProxy的子类必须是公开类

    个人有点代码洁癖,不喜欢这种不能控制的方式,就学了几天Emit,参考了诸多前辈代码 比如智慧和美貌的化身L大(Lemon)的著作AspectCore的一些设计和实现

    从从.Net Framework上把代码逻辑跑成功了,再迁移.Net Core,再加上依赖注入对项目再次解耦

    代码内有引用L大的AspectCore的反射扩展做优化,我这人懒,有可用的,就懒得自己再实现了

    我们前言哟一个ITest接口

    基于这个实现了一个Jit服务

    TestJit是我们的AOP特性类

     继承自JitAopAttribute即可

    贴上单例测试

    测试单元跑过了

    代码段的截图皆取自测试单元内

    项目内的AOP改成了两套:

    1、依赖于DispatchProxy的AOP,这套要依赖注入走的属性注入

    2、依赖于Emit的AOP,这套只有构造器注入,理论上可以属性注入,但是个人对AutoFac不是特别感兴趣

    项目地址:https://github.com/htrlq/NCoreCoder.Framework

  • 相关阅读:
    牛客网 CSL的英语考试
    SDNU 1016.矩形合并
    SDNU 1412.Huffuman树(优先队列)
    HDU
    HDU
    HDU
    SDNU 1504.B.Fibonacci
    Find them, Catch them(种类并查集)
    golang中的net/rpc包
    gRPC
  • 原文地址:https://www.cnblogs.com/NCoreCoder/p/11572463.html
Copyright © 2011-2022 走看看