VB. NET ArrayList to List (Of T) типизированное копирование / преобразование

У меня есть сторонний метод, который возвращает ArrayList старого стиля, и я хочу преобразовать его в типизированный ArrayList (Of MyType).

Dim udc As ArrayList = ThirdPartyClass.GetValues()
Dim udcT AS List(Of MyType) = ??

Я сделал простой цикл , но должен быть лучший способ:

Dim udcT As New List(Of MyType)
While udc.GetEnumerator.MoveNext
    Dim e As MyType = DirectCast(udc.GetEnumerator.Current, MyType)
    udcT.Add(e)
End While
6
задан abatishchev 24 August 2010 в 11:45
поделиться

3 ответа

Dim StronglyTypedList = OriginalArrayList.Cast(Of MyType)().ToList()
' requires `Imports System.Linq`
19
ответ дан 8 December 2019 в 12:17
поделиться

Что насчет этого?

Public Class Utility

    Public Shared Function ToTypedList(Of C As {ICollection(Of T), New}, T)(ByVal list As ArrayList) As C

        Dim typedList As New C
        For Each element As T In list
            typedList.Add(element)
        Next

        Return typedList
    End Function

End Class

Если будет работать для любого объекта Collection.

0
ответ дан 8 December 2019 в 12:17
поделиться

Дубликат. Взгляните на этот SO-Thread: Как в .Net преобразовать ArrayList в строго типизированный универсальный список без использования foreach?

В VB.Net с Framework < 3.5:

Dim arrayOfMyType() As MyType = DirectCast(al.ToArray(GetType(MyType)), MyType())
Dim strongTypeList As New List(Of MyType)(arrayOfMyType)
0
ответ дан 8 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: