乙個簡單的AOP框架

2021-04-02 21:46:37 字數 1646 閱讀 7676

乙個簡單的aop框架

aop非常的有趣,它可以幫助我們解決很多**橫向的很多問題,如果你不了解aop.請參看相關的文章.

現在介紹的乙個aop框架,來自codeproject 作者andrea bioli.文章名稱the ******st aop scenario in c#

現在我們來使用這個框架來演示乙個aop的強大.

首先建立乙個類,名位******aop.這個類必須繼承aopbaseclass.表示這個類要使用乙個控制器來控制.**如下

class ******aop:aopbaseclass

public void test1()

public void test2()

public void nomatchermethod()

}前面提到了控制器.現在我們來建立自己的控制器類,這個類必須繼承aopbasecontroler(這裡著名,這裡我改良過的)

public class mycontroller : aopbasecontroller

public override void begin(object o, system.runtime.remoting.messaging.imessage msg)

public override void end(object o, system.runtime.remoting.messaging.imessage msg)

public override void exception(object o, system.runtime.remoting.messaging.imessage msg)

}這裡覆蓋了三個方法begin,end和exception表示在使用aop的類的方法中我們可以新增這三個方法.

我們現在來看入口函式

aopconfig.setassoc(typeof(******aop), typeof(mycontroller), new regexmethnamematcher("test"));

******aop aop = new ******aop();

aop.test1();

這裡的第一行表示在******aop類和mycontroller之間的聯合,那麼通過什麼來聯合這兩個類呢?regexmethnamematcher這個類可以用來查詢******aop裡面的方法那些可以使用mycontroller提供的方法.

上面的例子表明了,我們的controller運用到了匹配test的方法上.

**的輸出結果為

begin

test1

end我們在******aop類test1方法上新增乙個throw new exception(「testexception

「);來丟擲乙個異常.在執行剛才的**.輸出結果為

begin

test1

endexeption

這個說明了,當丟擲異常的時候,呼叫控制器的exception方法.

好了,我們回到入口函式.我們新增如下的**

aop.test2();/

我們可以看到輸出test2()也運用了控制器.

如果新增

aop. nomatchermethod();就可以看出來,這個函式因為和matcher不匹配,所以沒有運用控制器.

體會到aop所帶來的另外一種**復用.

框架獲得請檢視codeproject

乙個簡單的驗證框架

工作中經常要進行表單驗證,乙個 做下來,自己也積累了一套。放出來做個備份!框架的兩個核心方法,乙個是用於處理提示資訊,另乙個是呼叫驗證函式!用於顯示錯誤提示 html 格式 param id 元素的css表示式 param status 0 表示失敗,這時第三個引數有效,顯示這紅色字 1表示成功,會...

乙個簡單的Python MVC框架(4)

前面都是準備,這裡是整個web mvc框架的核心地方,稍微多介紹一下。核心類是乙個叫dspth的模組。這裡我沒有處理路由,乙個是不太熟,另外乙個是主要是體會架構。我用的路由規則如下 1 用url的位址引數進行路由,有兩個引數,乙個是ctr,表示控制類,乙個是act表示執行的方法 2 所有執行方法都約...

乙個超級簡單的php框架

最近自己寫了乙個php框架,github位址如下 blakefez php framework command 該目錄用於存放cli模式下的command類 controller 該目錄用於存放cgi模式下的controller類 frame 該目錄用於存放框架的核心 blakefez.php 這是...