使用泛型来转换对象列表

时间:2016-03-30 09:27:50

标签: vb.net generics

我有一些由外部库设置的结构。 它是一个项目列表,其中itemdata是internaly beeing hold as Object。

使用列表时,尤其是使用linq查询时,我总是需要强制转换对象。

这里有一些示例代码:

Module Module1

    '========================
    'defined inside the lib
    '========================
    Public Class DataItem
        Public Property P1 As Object
    End Class

    Public Class DataList
        Inherits List(Of DataItem)
    End Class
    '========================


    Public Class D1
        Public Property Val As String
    End Class

    Sub Main()
        Dim I1 As New D1 With {.Val = "test1"}
        Dim I2 As New D1 With {.Val = "test2"}

        Dim dl As New DataList()
        dl.Add(New DataItem With {.P1 = I1})
        dl.Add(New DataItem With {.P1 = I2})

        Dim ql = (From p In dl Where CType(p.P1, D1).Val = "test1" Select p)

        For Each item In ql
            Console.Out.WriteLine(CType(item.P1, D1).Val)
        Next

        Console.ReadKey()
    End Sub

End Module

有没有办法绕过这个演员? 像实现泛型和重载DataList和/或DataItem并使用我自己的IEnumerator? 速度不是问题,我可以触摸列表中的每个对象。

非常感谢 雷

0 个答案:

没有答案