.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM