I modified your (for me relevant) Code a little bit to make it work. I think that will help you :
Imports System.Windows.Forms.Design
Imports System.ComponentModel
Public Class CustomerComponent
Inherits Component
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Public ReadOnly Property Customers As Customers
Get
Return myCustomers
End Get
End Property
Private myCustomers As New Customers
End Class
Public Class Customer
Public Property Name As String
Public Property Age As Integer
End Class
Public Class Customers
Inherits CollectionBase
Public Function Add(ByVal Item As Customer) As Customer
List.Add(Item)
Return Item
End Function
Public Function Add(ByVal Name As String, ByVal Age As Integer) As Customer
Dim Item As New Customer With {
.Name = Name,
.Age = Age
}
List.Add(Item)
Return Item
End Function
Public Sub AddRange(ByVal Items() As Customer)
Dim Item As Object
For Each Item In Items
List.Add(Item)
Next
End Sub
Default Public ReadOnly Property Item(ByVal Index As Integer) As Customer
Get
Return CType(List(Index), Customer)
End Get
End Property
Public Overrides Function ToString() As String
Return Nothing
End Function
End Class