Procedura: creare una raccolta utilizzata da un inizializzatore di raccolta (Visual Basic)
Quando si utilizza un inizializzatore di raccolta per creare una raccolta, il compilatore Visual Basic cerca un metodo Add del tipo di raccolta per il quale i parametri per il metodo Add corrispondono ai tipi dei valori nell'inizializzatore di raccolta.Questo metodo Add viene utilizzato per popolare la raccolta con i valori dell'inizializzatore di raccolta.
Esempio
Nell'esempio seguente viene illustrata una raccolta OrderCollection contenente un metodo Add pubblico che un inizializzatore di raccolta può utilizzare per aggiungere oggetti di tipo Order.Il metodo Add consente di utilizzare la sintassi abbreviata dell'inizializzatore di raccolta.
Public Class Customer
Public Property Id As Integer
Public Property Name As String
Public Property Orders As OrderCollection
Public Sub New(ByVal id As Integer, ByVal name As String, ByVal orders As OrderCollection)
Me.Id = id
Me.Name = name
Me.Orders = orders
End Sub
End Class
Public Class Order
Public Property Id As Integer
Public Property CustomerId As Integer
Public Property OrderDate As DateTime
Public Sub New(ByVal id As Integer,
ByVal customerId As Integer,
ByVal orderDate As DateTime)
Me.Id = id
Me.CustomerId = customerId
Me.OrderDate = orderDate
End Sub
End Class
Public Class OrderCollection
Implements IEnumerable(Of Order)
Dim items As New List(Of Order)
Public Property Item(ByVal index As Integer) As Order
Get
Return CType(Me(index), Order)
End Get
Set(ByVal value As Order)
items(index) = value
End Set
End Property
Public Sub Add(ByVal id As Integer, ByVal customerID As Integer, ByVal orderDate As DateTime)
items.Add(New Order(id, customerID, orderDate))
End Sub
Public Function GetEnumerator() As IEnumerator(Of Order) Implements IEnumerable(Of Order).GetEnumerator
Return items.GetEnumerator()
End Function
Public Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator
Return Me.GetEnumerator()
End Function
End Class
Imports System.Runtime.CompilerServices
Module Module1
<Extension()>
Sub Add(ByVal genericList As List(Of Customer),
ByVal id As Integer,
ByVal name As String,
ByVal orders As OrderCollection)
genericList.Add(New Customer(id, name, orders))
End Sub
End Module
Dim customerList = New List(Of Customer) From
{
{1, "John Rodman", New OrderCollection From {{9, 1, #6/12/2008#},
{8, 1, #6/11/2008#},
{5, 1, #5/1/2008#}}},
{2, "Ariane Berthier", New OrderCollection From {{2, 2, #1/18/2008#},
{4, 2, #3/8/2008#},
{6, 2, #3/18/2008#},
{7, 2, #5/14/2008#},
{5, 2, #4/4/2008#}}},
{3, "Brian Perry", New OrderCollection From {{1, 3, #1/15/2008#},
{3, 3, #3/8/2008#}}}
}