Imports System.Collections
Imports System.Collections.Generic
Public Class MainClass
Public Shared Sub Main()
Dim custColl As New List(Of Customer)()
Dim cust As New Customer("1", "Name")
cust.AddItem(New Order(DateTime.Parse("10/01/2004"), "1", "N"))
cust.AddItem(New Order(DateTime.Parse("10/03/2004"), "2", "X"))
cust.AddItem(New Order(DateTime.Parse("10/07/2004"), "3", "P"))
custColl.Add(cust)
cust = New Customer("2", "name 1")
cust.AddItem(New Order(DateTime.Parse("11/04/2004"), "6", "P"))
cust.AddItem(New Order(DateTime.Parse("11/07/2004"), "8", "Y"))
cust.AddItem(New Order(DateTime.Parse("12/12/2004"), "9", "K"))
custColl.Add(cust)
cust = New Customer("3", "Name 3")
cust.AddItem(New Order(DateTime.Parse("10/01/2004"), "4", "W"))
custColl.Add(cust)
For custIdx As Int32 = 0 To (custColl.Count - 1)
cust = custColl(custIdx)
Console.Out.WriteLine("Customer-) ID: {0}, Name: {1}", cust.Id, cust.Name)
Dim orders() As Order = cust.Items
For orderIdx As Int32 = 0 To (orders.Length - 1)
Dim ord As Order = orders(orderIdx)
Console.Out.WriteLine(" Order-> Date: {0}, Item: {1}, Desc: {2}", ord.OrderDate, ord.ItemId, ord.Description)
Next
Next
Dim empColl As New List(Of Employee)()
Dim emp As New Employee("1", "R")
empColl.Add(emp)
emp = New Employee("2", "M")
empColl.Add(emp)
emp = New Employee("3", "B")
emp.AddItem(New Employee("6", "S"))
emp.AddItem(New Employee("7", "B"))
emp.AddItem(New Employee("8", "T"))
empColl.Add(emp)
For mgrIdx As Int32 = 0 To (empColl.Count - 1)
Dim manager As Employee = empColl(mgrIdx)
Console.Out.WriteLine("Manager-) ID: {0}, Name: {1}", manager.Id, manager.Name)
For idx As Int32 = 0 To (manager.Items.Length - 1)
emp = manager.Items(idx)
Console.Out.WriteLine(" Employee-) Id: {0}, Name: {1}", emp.Id, emp.Name)
Next
Next
End Sub
End Class
Public Class Customer
Inherits Person(Of Order)
Public Sub New(ByVal Id As String, ByVal Name As String)
MyBase.New(Id, Name)
End Sub
End Class
Public Class Employee
Inherits Person(Of Employee)
Public Sub New(ByVal Id As String, ByVal Name As String)
MyBase.New(Id, Name)
End Sub
End Class
Public Class Order
Public OrderDate As DateTime
Public ItemId As String
Public Description As String
Public Sub New(ByVal OrderDate As DateTime, ByVal ItemId As String, ByVal Description As String)
Me.OrderDate = OrderDate
Me.ItemId = ItemId
Me.Description = Description
End Sub
End Class
Public Class Person(Of T)
Public Name As String
Public Id As String
Private _items As List(Of T)
Public Sub New(ByVal Id As String, ByVal Name As String)
Me.Id = Id
Me.Name = Name
Me._items = New List(Of T)
End Sub
Public ReadOnly Property Items() As T()
Get
Return Me._items.ToArray()
End Get
End Property
Public Sub AddItem(ByVal newItem As T)
Me._items.Add(newItem)
End Sub
End Class