Практическое руководство. Создание метода расширения Add, используемого инициализатором набора (Visual Basic)

При использовании инициализатора коллекции для создания коллекции компилятор Visual Basic ищет Add метод типа коллекции, для Add которого параметры метода соответствуют типам значений в инициализаторе коллекции. Этот Add метод используется для заполнения коллекции значениями из инициализатора коллекции.

Если метод сопоставления Add не существует и вы не можете изменить код коллекции, можно добавить метод Add расширения, который принимает параметры, необходимые инициализатору коллекции. Обычно это необходимо сделать при использовании инициализаторов коллекций для универсальных коллекций.

Пример

В следующем примере показано, как добавить метод расширения в универсальный List<T> тип, чтобы инициализатор коллекции можно было использовать для добавления объектов типа Employee. Метод расширения позволяет использовать сокращенный синтаксис инициализатора коллекции.

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

См. также