Практическое руководство. Создание метода расширения 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