在基于前兩篇文章給出的aop微型框架的實現(xiàn)的基礎(chǔ)上,我們可以寫個例子來測試一下了:)
  
  public class aopcontrolproxyfactory : iaopproxyfactory
 {
  #region iaopproxyfactory 成員
  public aopproxybase createaopproxyinstance(marshalbyrefobject obj, type type)
  {
   return new aopcontrolproxy(obj ,type) ;
  }
  #endregion
 }
 
 //自定義真實代理
 public class aopcontrolproxy : aopproxybase 
 {
  public aopcontrolproxy(marshalbyrefobject obj ,type type) : base(obj ,type)
  {
}
  public override void preprocess(imessage requestmsg)
  {
   console.write("begin aop !") ;
  }
  public override void postprocess(imessage requestmsg, imessage respond) 
  {
   console.write("end aop !") ;
  }
 }
 
 [aopproxyattribute(typeof(aopcontrolproxyfactory))] //將自己委托給aop代理aopcontrolproxy
 public class example : contextboundobject//放到特定的上下文中,該上下文外部才會得到該對象的透明代理
 {
  private string name ;
  public example(string a)
  {
   this.name = a ;
  }
  
  
  [methodaopswitcherattribute(true)]
  public void say_hello()
  {
   console.writeline("hello ! " + name ) ;
  }
  public void saybyebye()
  {
   console.writeline("bye ! " + name ) ;
  }
 }
新聞熱點
疑難解答
圖片精選