【问题标题】:Creating an Array of Objects in Classic ASP在经典 ASP 中创建对象数组
【发布时间】:2019-02-20 18:12:45
【问题描述】:

我正在尝试在 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 />

【问题讨论】:

标签: arrays asp-classic


【解决方案1】:

由于您只需要在数组中添加一个 lineitem,您可以将 AddLineItem 设为 sub 而不是函数。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2023-03-10
    • 2015-02-21
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2011-06-01
    相关资源
    最近更新 更多