.Net Core下基于Emit的打造AOP
之前的基于DispatchProxy的AOP組件,實(shí)現(xiàn)了屬性注入,但是這個依舊有很多限制
比如不支持構(gòu)造器注入,繼承DispatchProxy的子類必須是公開類
個人有點(diǎn)代碼潔癖,不喜歡這種不能控制的方式,就學(xué)了幾天Emit,參考了諸多前輩代碼 比如智慧和美貌的化身L大(Lemon)的著作AspectCore的一些設(shè)計(jì)和實(shí)現(xiàn)
從從.Net Framework上把代碼邏輯跑成功了,再遷移.Net Core,再加上依賴注入對項(xiàng)目再次解耦
代碼內(nèi)有引用L大的AspectCore的反射擴(kuò)展做優(yōu)化,我這人懶,有可用的,就懶得自己再實(shí)現(xiàn)了
?
我們前言喲一個ITest接口
基于這個實(shí)現(xiàn)了一個Jit服務(wù)
?
?
?
TestJit是我們的AOP特性類
?
?
?繼承自JitAopAttribute即可
貼上單例測試
測試單元跑過了
?
?
?
代碼段的截圖皆取自測試單元內(nèi)
項(xiàng)目內(nèi)的AOP改成了兩套:
1、依賴于DispatchProxy的AOP,這套要依賴注入走的屬性注入
2、依賴于Emit的AOP,這套只有構(gòu)造器注入,理論上可以屬性注入,但是個人對AutoFac不是特別感興趣
?
項(xiàng)目地址:https://github.com/htrlq/NCoreCoder.Framework
轉(zhuǎn)載于:https://www.cnblogs.com/NCoreCoder/p/11572463.html
總結(jié)
以上是生活随笔為你收集整理的.Net Core下基于Emit的打造AOP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运维必知的23个经验教训,值得收藏!
- 下一篇: 【zz】标题: 安装mplayer+ff