我有一些由外部库设置的结构。 它是一个项目列表,其中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? 速度不是问题,我可以触摸列表中的每个对象。
非常感谢 雷