我有一个具有type属性的对象。当类型设置为Int64,我尝试稍后提取类型信息时,我得到System.Nullable。
这是类型信息
{Name = "Nullable`1" FullName = "System.Nullable`1[[System.Int64, mscorlib, Version=2.0.0.0]]"}
如何进入System.Int64类型?
答案 0 :(得分:6)
听起来您有一个给定的类型,如果它是Nullable<T>
,您想要该类型或其基础类型。最好的方法是这样的:
Nullable.GetUnderlyingType(yourObject.Type) ?? yourObject.Type;
由于Nullabe.GetUnderlyingType
返回null
,如果给定的Type
不是Nullable<T>
,您可以使用空合并运算符(??)将值默认为原始类型。
答案 1 :(得分:1)
Type t = Nullable.GetUnderlyingType(nullableType);
请参阅MSDN。
答案 2 :(得分:1)
if ( property.PropertyType.IsGenericType
&& property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>) )
答案 3 :(得分:0)
如果对象不为null,则GetType将返回Int64。
答案 4 :(得分:0)
也许您将type-property设置为“System.Int64?”地方?否则我无法重现你的行为。