返回System.Nullable的int64的GetType

时间:2009-02-19 14:48:37

标签: .net types nullable

我有一个具有type属性的对象。当类型设置为Int64,我尝试稍后提取类型信息时,我得到System.Nullable。

这是类型信息

{Name = "Nullable`1" FullName = "System.Nullable`1[[System.Int64, mscorlib, Version=2.0.0.0]]"}

如何进入System.Int64类型?

5 个答案:

答案 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?”地方?否则我无法重现你的行为。