繁体   English   中英

在经典 ASP 中创建对象数组

[英]Creating an Array of Objects in Classic ASP

我正在尝试在 Classic ASP 中创建一个类并且正在接近我正在寻找的东西,但它并不完全存在。 我还没有找到任何解决我的问题的例子。

在示例中,我需要将 LineItem 类作为数组存储在 Order 类中,以便一个订单可以有多个行项目。 目前它可以工作,但只允许 LineItem 的单个实例。 有人能给我一个例子来告诉我如何把它变成一个数组吗? 我了解如何创建一个对象数组,但不了解如何将它们存储在父对象中。 我很抱歉,但自从我用 Classic ASP 进行任何编程以来已经超过 15 年了,我已经忘记了当时我所知道的大部分内容。

<%
    Class LineItem

    Private LineNumberVar
    Private ItemCostVar
    Private QuantityVar
    Private ItemCodeVar
    Private ItemDescriptionVar

    ' Line Number
    Public Property Get LineNumber()
        LineNumber = LineNumberVar
    End Property

    Public Property Let LineNumber(lineNumberParam)
        LineNumberVar = lineNumberParam
    End Property

    ' Item Cost
    Public Property Get ItemCost()
        ItemCost = ItemCostVar
    End Property

    Public Property Let ItemCost(itemCostParam)
        ItemCostVar = itemCostParam
    End Property

    ' Quantity
    Public Property Get Quantity()
        Quantity = QuantityVar
    End Property

    Public Property Let Quantity(quantityParam)
        QuantityVar = quantityParam
    End Property

    ' Item Code
    Public Property Get ItemCode()
        ItemCode = ItemCodeVar
    End Property

    Public Property Let ItemCode(itemCodeParam)
        ItemCodeVar = itemCodeParam
    End Property

    ' Item Description
    Public Property Get ItemDescription()
        ItemDescription = ItemDescriptionVar
    End Property

    Public Property Let ItemDescription(itemDescriptionParam)
        ItemDescriptionVar = itemDescriptionParam
    End Property
End Class


Class Order

    Private CustomerIDVar
    Private OrderIDVar
    Private EmailVar
    Private ItemsVar 

    'CustomerID
    Public Property Get CustomerID()
        CustomerID = CustomerIDVar
    End Property

    Public Property Let CustomerID(customerIDParam)
        CustomerIDVar = customerIDParam
    End Property

    'OrderID
    Public Property Get OrderID()
        OrderID = OrderIDVar
    End Property

    Public Property Let OrderID(orderIDParam)
        OrderIDVar = orderIDParam
    End Property

    'Email
    Public Property Get Email()
        Email = EmailVar
    End Property

    Public Property Let Email(emailParam)
        EmailVar = emailParam
    End Property

    ' Line Items (needs to be an array of LineItem class objects)
    'Items
    Public Property Get Items()
        Set Items = ItemsVar
    End Property

    ' must use Set for objects
    Public Property Set Items(itemsParam)
        Set ItemsVar = itemsParam
    End Property

    Private Sub Class_Initialize
        ItemsVar = Array() ' initialize to empty dynamic array
    End Sub

    Function AddLineItem(itemArray, item)
        ReDim Preserve itemArray(UBound(itemArray) + 1)
        itemArray(UBound(itemArray)) = items
        AddLineItem = itemArray
    End Function
End Class


    Dim ItemsVar
    Set ItemsVar = new LineItem

    ItemsVar.LineNumber = 1
    ItemsVar.ItemCost = 25.00
    ItemsVar.Quantity = 1
    ItemsVar.ItemCode = "42667"
    ItemsVar.ItemDescription = "Software"

    Dim OrderVar
    Set OrderVar = New Order

    Set OrderVar.Items = ItemsVar

    OrderVar.CustomerID = "0937263"
    OrderVar.OrderID = "2348725"
    OrderVar.Email = "nobody@gmail.com"

    %>

    <%= OrderVar.CustomerID %><br />
    <%= OrderVar.OrderID %><br />
    <%= OrderVar.Email %><br />
    <%= OrderVar.Items.LineNumber %><br />
    <%= OrderVar.Items.ItemCost %><br />
    <%= OrderVar.Items.Quantity %><br />
    <%= OrderVar.Items.ItemCode %><br />
    <%= OrderVar.Items.ItemDescription %><br />

由于您只需要向数组添加一个 lineitem,您可以将AddLineItem子项而不是函数。

Class Order

    Private ItemsVar 

    Public Property Get Items()
        Items = ItemsVar
    End Property

    Public Property Set Items(itemsParam)
        Set ItemsVar = itemsParam
    End Property

    Private Sub Class_Initialize
        ItemsVar = Array()
    End Sub

    Sub AddLineItem(newitem)
        ReDim Preserve ItemsVar(UBound(ItemsVar) + 1)
        set ItemsVar(UBound(ItemsVar)) = newitem
    End Sub

End Class

要添加新订单项,

Set OrderVar = New Order
Ordervar.AddLineItem(NewItem)

要循环遍历订单项,

For each ThisLineItem in OrderVar.Items
    Response.write ThisLineItem.ItemDescription & "<br>"
Next

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM