【发布时间】:2012-06-05 18:28:01
【问题描述】:
我有一个具有 type 属性的对象。当类型设置为 Int64 时,我稍后尝试提取类型信息,我得到 System.Nullable。
这是类型信息
{Name = "Nullable`1" FullName = "System.Nullable`1[[System.Int64, mscorlib, Version=2.0.0.0]]"}
如何获得 System.Int64 类型的 this?
【问题讨论】:
我有一个具有 type 属性的对象。当类型设置为 Int64 时,我稍后尝试提取类型信息,我得到 System.Nullable。
这是类型信息
{Name = "Nullable`1" FullName = "System.Nullable`1[[System.Int64, mscorlib, Version=2.0.0.0]]"}
如何获得 System.Int64 类型的 this?
【问题讨论】:
听起来您有一个给定的类型,如果它是Nullable<T>,您想要该类型或其基础类型。最好的方法是这样的:
Nullable.GetUnderlyingType(yourObject.Type) ?? yourObject.Type;
由于Nullabe.GetUnderlyingType 返回null,如果给定的Type 不是Nullable<T>,您可以使用空合并运算符 (??) 将值默认为原始类型。
【讨论】:
Type t = Nullable.GetUnderlyingType(nullableType);
见MSDN。
【讨论】:
if ( property.PropertyType.IsGenericType
&& property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>) )
【讨论】:
如果对象不为空,GetType 将返回 Int64。
【讨论】:
也许您将类型属性设置为“System.Int64”?任何地方?否则我无法重现你的行为。
【讨论】: