我使用反射来获取匿名类型的值:
object value = property.GetValue(item, null);
当底层值是可空类型(T?)时,如果值为null,如何获取基础类型?
鉴于
int? i = null;
type = FunctionX(i);
type == typeof(int); // true
寻找FunctionX()。希望这是有道理的。感谢。
答案 0 :(得分:6)
您可以这样做:
if(type.IsgenericType)
{
Type genericType = type.GetGenericArguments()[0];
}
编辑: 用于一般用途:
public Type GetTypeOrUnderlyingType(object o)
{
Type type = o.GetType();
if(!type.IsGenericType){return type;}
return type.GetGenericArguments()[0];
}
用法:
int? i = null;
type = GetTypeOrUnderlyingType(i);
type == typeof(int); //true
这适用于任何泛型类型,而不仅仅是Nullable。
答案 1 :(得分:2)
如果您知道Nullable<T>
,则可以使用GetUnderlyingType(Type)
中的静态助手Nullable
。
int? i = null;
type = Nullable.GetUnderlyingType(i.GetType());
type == typeof(int); // true
答案 2 :(得分:0)
根据我对http://blogs.msdn.com/haibo_luo/archive/2005/08/23/455241.aspx的理解,您将获得返回类型的Nullable版本。