之前的基於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不是特別感興趣