注:我不想区分通用参数是否无效。 我想知道,如果是is,哪些是不可否认的原始类型?
我在此试图:
Function CreateTdParameter(Of T)(Name As String, Value As T) As TdParameter
Dim TdType As TdType
Dim ValueType As Type = GetType(T)
If ValueType.IsGenericType Then
Dim GenType As Type = ValueType.GetGenericTypeDefinition()
If GenType = GetType(Nullable(Of )) Then
ValueType = Activator.CreateInstance(GenType.MakeGenericType(New Type() {ValueType}))
ValueType = Nullable.GetUnderlyingType(ValueType.GetGenericTypeDefinition().UnderlyingSystemType)
End If
End If
If ValueType = GetType(String) Then
TdType = Teradata.Client.Provider.TdType.VarChar
ElseIf ValueType = GetType(Integer) Then
TdType = Teradata.Client.Provider.TdType.Integer
ElseIf ValueType = GetType(DateTime) Then
TdType = Teradata.Client.Provider.TdType.Timestamp
Else
Throw New NotImplementedException(String.Format("{0} not expected.", Value.GetType))
End If
Return CreateTdParameter(Name, Value, TdType, ParameterDirection.Input)
End Function
当<代码>Datetime?通过时,便会产生以下错误。 价值编码>参数:
GenericArguments[0], System.Nullable
1[System.DateTime] , on System.Nullable1[T] violates the constraint of type T .
看来,我需要找到基本类型,以便用反思来立即消除这种类型。 无法确定如何绕过这一渔获量。
任何人能否向我指出,我可以说明某种通用类型是否无效,如果是,我如何能够获得其基本类型?