我有一个由WCF从json反序列化的整数列表。此列表反序列化为(int32)列表。我对它的反序列化没有任何控制。
我需要能够看到此列表是否包含恰好是Int64的值。它显然不起作用。以下是该函数的示例:
Private Shared Function IsIn(aPropertyValue As Int64, aList As IList) As Boolean
Return aList.Contains(aPropertyValue)
End Function
我传递IList的原因是因为我不想创建这个函数12次,每个数字类型一次,字节到uint64。如果我确实创建了12次,每次可能选项的时间为12 x 12次,我想我可以使用List(of T).Exists()。
Contains()的文档说它使用IEquatable(Of T).Equals来执行比较。我必须认为可以比较具有相同值的Int32和Int64,并且发现它们是相等的。
我一定错过了一些明显的东西。
答案 0 :(得分:0)
试试这个:
Private Function IsIn(ByVal aPropertyValue As Long, ByVal list As IList) As Boolean
Dim genericListType As Type = CType(list, Object).GetType().GetGenericArguments()(0)
Dim convertedPropertyValue As Object = Nothing
Try
convertedPropertyValue = Convert.ChangeType(aPropertyValue, genericListType)
Catch
End Try
If convertedPropertyValue IsNot Nothing Then
Return list.Contains(convertedPropertyValue)
Else
Return False
End If
End Function