在 Classic ASP 中创建对象数组
Creating an Array of Objects in Classic ASP
我正在尝试在 Classic ASP 中创建一个 class 并且正在接近我正在寻找的东西,但它并不完全存在。我还没有找到任何解决我问题的例子。
在示例中,我需要将 LineItem class 作为数组存储在订单 class 中,这样一个订单可以有多个订单项。目前它可以工作,但只允许一个 LineItem 实例。有人能给我一个例子,告诉我如何把它变成一个数组吗?我了解如何创建对象数组,但不知道如何将它们存储在父对象中。抱歉,我已经超过 15 年没有使用 Classic ASP 编写任何程序了,我已经忘记了当时我所知道的大部分内容。
<%
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
成为一个 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
我正在尝试在 Classic ASP 中创建一个 class 并且正在接近我正在寻找的东西,但它并不完全存在。我还没有找到任何解决我问题的例子。
在示例中,我需要将 LineItem class 作为数组存储在订单 class 中,这样一个订单可以有多个订单项。目前它可以工作,但只允许一个 LineItem 实例。有人能给我一个例子,告诉我如何把它变成一个数组吗?我了解如何创建对象数组,但不知道如何将它们存储在父对象中。抱歉,我已经超过 15 年没有使用 Classic ASP 编写任何程序了,我已经忘记了当时我所知道的大部分内容。
<%
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
成为一个 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