遭遇ASP類的事件設計

  這段時間由於接觸到MVC,也知道了Class的運用方式,遭遇到了事件的設計。
  其實具體的事件設計方式我也不是很明白,在QQ裏newskyline跟我說了,ASP沒辦法作Class的事件,只能模擬。而我呢。算是爲達目的不則手段(寫程序而以)的,認爲模擬也好,非模擬也行,只要達到我想要的效果就是好東西。
  模擬事件的方式有兩種
  第一種:借用了execute/eval,用一個屬性收取函數名的字符,然後使用execute/eval來運行函數。
    如:
      obj.OnDataUpdateStart="CheckData"
     其構造爲:
      public property let OnDataUpdateStart(byval A_strValue)
      '在此省略了對A_strValue的一些嚴謹的驗證代碼。
        p_strOnDataUpdateStart=A_strValue
      end property
    
     事件是觸發爲:
      public sub DataUpdate()
        '...忽略過程...
        execute(p_strOnDataUpdateStart & "(參數變量一,參數變量二)")
        '...忽略過程...
      end sub
    稍微提一下execute和eval的不同點。
    同樣的“x=y”。execute("x=y")的結果是將y值賦給x,而eval("x=y")則會返回一個Boolean值,表示x與y的測試結果,如x等於y則返回true,反之返回false。

  第二種:借用函數指針GetRef,在vbs手冊的解釋上來看就是綁定事件專用的函數。具體解釋如下:
    “返回一個指向一過程的引用,此過程可綁定某事件。”
    具體運用例子,如:
      obj.OnDataUpdateStart="CheckData"
      其構造則改爲:
        public OnDataUpdateStart  '其實可以使用get/let模式,想偷懶了,所以直接聲明一個公開變量來傳遞了。

      事件觸發則改爲:
        public sub DataUpdate()
          '...忽略過程...
          set me.OnDataUpdateStart=GetRef(OnDataUpdateStart)
          me.OnDataUpdateStart("參數變量一","參數變量二")
          '...忽略過程...
        end sub

  以上兩種方式可以實現事件綁定,但是,從解釋上來說,我比較推崇第二種,相對於execute/eval來說更爲嚴謹一些。
  明天玩了一天的結論,在此作個記錄。希望對看過文章的人有用,如有什麼問題可以到我的Blog(http://blog.csdn.net/oyiboy/archive/2006/02/10/595939.aspx)裏來聊聊。
  閒話:歡迎各位有手機的朋友到我的“海魚手機加瓦站(http://wwww.fishjava.com)”來轉轉,有不少的免費的手機遊戲和圖片提供給各位,不但可以在線試玩遊戲,直接通過WAP下載遊戲和圖片,還能自己上傳一些好玩的遊戲或圖片上來大家一起來玩。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章