我试图根据对象的属性创建一个数据集。例如,我有一个Person类的实例,其属性包括ID,Forename,Surname,DOB等。使用反射,我将列添加到基于对象属性的新数据集中:
For Each pi As PropertyInfo In person.GetType().GetProperties()
Dim column As New DataColumn(pi.Name, pi.PropertyType)
table.Columns.Add(column)
Next
我的问题是,其中一些特性是可空类型,不受数据集支持。有没有什么办法从可空类型中提取底层系统类型?
谢谢。
发布于 2018-05-30 08:39:40
首先,查看你是否处理Nullable类型的代码:
Private Function IsNullableType(ByVal myType As Type) As Boolean
Return (myType.IsGenericType) AndAlso (myType.GetGenericTypeDefinition() Is GetType(Nullable(Of )))
End Function
请注意GetType中不常用的语法。这是必要的。
所以,你可以这样做,你可以做这样的事情......在这里,在一个ORM工具中,我试图将值转换为可能或不可为空的泛型类型:
If (Not value Is Nothing) AndAlso IsNullableType(GetType(T)) Then
Dim UnderlyingType As Type = Nullable.GetUnderlyingType(GetType(T))
Me.InnerValue = Convert.ChangeType(value, UnderlyingType)
Else
Me.InnerValue = value
End If
发布于 2018-05-30 09:43:50
Nullable.GetUnderylingType(myType)
将返回基础类型,如果它不是可空类型,则返回null。
https://stackoverflow.com/questions/-100000134
复制相似问题