什么是AOP?引用百度百科:AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預(yù)編譯方式和運行期動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術(shù)。實現(xiàn)AOP主要由兩種方式,一種是編譯時靜態(tài)植入,優(yōu)點是效率高,缺點是缺乏靈活性,.net下postsharp為代表者(這個是收費的)。另一種方式是動態(tài)代理,優(yōu)缺點與前者相反,動態(tài)為目標類型創(chuàng)建代理,通過代理調(diào)用實現(xiàn)攔截。AOP能做什么,常見的用例是事務(wù)處理、日志記錄等等。下面就講講Autofac怎么實現(xiàn)AOP,Autofac是一個.net下非常優(yōu)秀,性能非常好的IOC容器(.net下效率最高的容器),加上AOP簡直是如虎添翼。Autofac的AOP是通過Castle(也是一個容器)項目的核心部分實現(xiàn)的,名為Autofac.Extras.DynamicProxy,顧名思義,其實現(xiàn)方式為動態(tài)代理。
使用前的準備:
通過Nuge安裝程序包 :Autofac、Autofac.Extras.DynamicProxy,安裝成功之后會增加三個引用
下面正式開始了!
第一步:創(chuàng)建攔截器
下面是一個簡單的攔截器示例,該攔截器的功能是顯示被攔截的方法名稱、參數(shù)列表和返回結(jié)果
1 /// <summary> 2 /// 攔截器 需要實現(xiàn) IInterceptor接口 Intercept方法 3 /// </summary> 4 public class CallLogger: IInterceptor 5 { 6 TextWriter _output; 7 8 public CallLogger(TextWriter output) 9 {10 _output = output;11