最近整理ASP/VBScript代碼,發(fā)現(xiàn)過去的一個ASP實現(xiàn)的MVC框架,可惜是個半成品,效率也成問題,不過發(fā)現(xiàn)里面有些我寫的代碼,感覺還稍稍可以拿出來見人,于是今天作此文以記之。
說是ASP,其實和VBScript也脫不了干系,VBScript語言傳承于Visual Basic,VB的語法靈活度已經(jīng)不盡如人意了,VBS作為其子集可想而知。神馬反射、自省等先進的技術(shù),微軟在.NET中才引入。作為被拋棄的技術(shù),也不奢望微軟能夠提供支持,于是頑固守舊的程序員只有絞盡腦汁的去模仿實現(xiàn)一些類似的功能。
好吧,我承認很長一段時間我就是頑固守舊派中的一員,今天介紹的就是其中的一項功能,動態(tài)創(chuàng)建一個屬性對象,屬性對象姑且這么稱呼,也就是說動態(tài)創(chuàng)建的對象只包含屬性(Properties)。
下面貼出實現(xiàn)代碼供大家參考:
復(fù)制代碼 代碼如下:
'
' ASP/VBScript Dynamic Object Generator
' Author: WangYe
' For more information please visit
'
' This code is distributed under the BSD license
'
Const PROPERTY_ACCESS_READONLY = 1
Const PROPERTY_ACCESS_WRITEONLY = -1
Const PROPERTY_ACCESS_ALL = 0
Class DynamicObject
Private m_objProperties
Private m_strName
Private Sub Class_Initialize()
Set m_objProperties = CreateObject("Scripting.Dictionary")
m_strName = "AnonymousObject"
End Sub
Private Sub Class_Terminate()
If Not IsObject(m_objProperties) Then
m_objProperties.RemoveAll
End If
Set m_objProperties = Nothing
End Sub
Public Sub setClassName(strName)
m_strName = strName
End Sub
Public Sub add(key, value, access)
m_objProperties.Add key, Array(value, access)
End Sub
Public Sub setValue(key, value, access)
If m_objProperties.Exists(key) Then
m_objProperties.Item(key)(0) = value
m_objProperties.Item(key)(1) = access
Else
add key,value,access
End If
End Sub
Private Function getReadOnlyCode(strKey)
Dim strPrivateName, strPublicGetName
新聞熱點
疑難解答