1

arraylist従来の ASP を使用してクラスに属性を追加するにはどうすればよいですか?

私の例(動作していません):

Class AA
    Public AA_id
    Dim data: set data = CreateObject("System.Collections.ArrayList")
End Class
4

1 に答える 1

1

メソッド内のクラスメンバーを初期化する必要があります-関数、クラスコンストラクターのサブルーチン。当然のことながら、これらの最良のものはコンストラクター内にあります。

カスタム VBScript クラスの一部として .NET ArrayList を使用する方法を示す完全に機能するコード:

<%
Class MyCustomClass
    Private internalArrayList

    Private Sub Class_Initialize()  
        Set internalArrayList = Server.CreateObject("System.Collections.ArrayList")
    End Sub  

    Private Sub Class_Terminate()  
        Set internalArrayList = Nothing
    End Sub  

    Public Sub AddItem(oItem)
        internalArrayList.Add(oItem)
    End Sub

    Public Function ToString()
        Dim data, x
        data = "List contains " & internalArrayList.Count & " item"
        If internalArrayList.Count<>1 Then data = data & "s"
        For x=0 To internalArrayList.Count-1
            data = data & "<br />"
            If IsObject(internalArrayList(x)) Then
                data = data & "complex object of type " & TypeName(internalArrayList(x))
            ElseIf IsArray(internalArrayList(x)) Then
                data = data & "array with " & (UBound(internalArrayList(x)) + 1) & " items"
            Else  
                data = data & internalArrayList(x)
            End If
        Next
        ToString = data
    End Function
End Class
%>

複雑なオブジェクトの追加を含む使用例:

Class Foo
    Public Dummy
End Class

Dim myInstance, myFoo
Set myInstance = New MyCustomClass
myInstance.AddItem("hello")
myInstance.AddItem("world")
myInstance.AddItem(Array(1, 2, 3))

Set myFoo = New Foo
myFoo.Dummy = "just checking"
myInstance.AddItem(myFoo)

Response.Write(myInstance.ToString())
于 2012-09-20T06:56:25.517 に答える