.Net Core下基于Emit的打造AOP
生活随笔
收集整理的這篇文章主要介紹了
.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
轉載于:https://www.cnblogs.com/NCoreCoder/p/11572463.html
總結
以上是生活随笔為你收集整理的.Net Core下基于Emit的打造AOP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运维必知的23个经验教训,值得收藏!
- 下一篇: asp.net ajax控件工具集 Au