Procedura: creare un metodo di estensione Add utilizzato da un inizializzatore di raccolta (Visual Basic)

Quando si usa un inizializzatore di raccolta per creare una raccolta, il compilatore di 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 della raccolta. Questo metodo Add viene usato per popolare la raccolta con i valori dell'inizializzatore della raccolta.

Se non esiste alcun metodo Add corrispondente e non è possibile modificare il codice per la raccolta, è possibile aggiungere un metodo di estensione denominato Add che accetta i parametri richiesti dall'inizializzatore della raccolta. Questa operazione è in genere necessaria quando si usano gli inizializzatori di raccolta per le raccolte generiche.

Esempio

Nell'esempio seguente viene illustrato come aggiungere un metodo di estensione al tipo List<T> generico in modo che sia possibile usare un inizializzatore di raccolta per aggiungere oggetti di tipo Employee. Il metodo di estensione consente di usare la sintassi abbreviata dell'inizializzatore di raccolta.

Public Class Employee
    Public Property Id() As Integer
    Public Property Name() As String
End Class
Imports System.Runtime.CompilerServices

Module Module1

    <Extension()>
    Sub Add(ByVal list As List(Of Employee), ByVal id As Integer,
                                             ByVal name As String)
        list.Add(New Employee With {.Id = id, .Name = name})
    End Sub

End Module
Sub Main()
    Dim employees = New List(Of Employee) From {{1, "Adams, Ellen"},
                                                {2, "Hamilton, James R."},
                                                {3, "Ihrig, Ryan"}}
End Sub

Vedi anche