回到目錄

什么是LindAspects

之前寫了關(guān)于Aspects的文章《Lind.DDD.Aspects通過Plugins實現(xiàn)方法的動態(tài)攔截~Lind里的AOP,今天主要在設(shè)計思想上進行刨析一下,對緩存攔截器一直沒有實現(xiàn),所以文章了也一直沒有發(fā)出來,讓大家等這么久實在不好意思。LindAspects主要是面向切面編程AOP的一種實現(xiàn),就像MVC框架里的Filter,F(xiàn)ilter會自己注入到了每個Action執(zhí)行的各個環(huán)節(jié)里,而我們可以直接實現(xiàn)自己的Filter即可,例如只要是繼承ActionFilter,那么你的Filter在Action執(zhí)行時就可以被動態(tài)執(zhí)行,這種設(shè)計就相當(dāng)于把整個Action橫切開來,注入我們需要的代碼,這大概念就是面向切面(方面)編程的真諦吧!

LindAspects原理是什么

主要通過Emit實現(xiàn)對方法的重寫,這個方法不向Unity.Interception非要是虛方法,咱們的Emit本質(zhì)上是建立一個新的類型,然后建立一個新的方法,這個方法里再去執(zhí)行當(dāng)前被攔截的方法的主體,然后通過主體方法實現(xiàn)的AspectAttribute來控制是在主體執(zhí)行前注入還是在主體執(zhí)行之后注入!

網(wǎng)友評論