泛型,反射
本帖最后由 xiaoqiaoluanwu 于 2013-04-24 15:11:28 编辑 下边这段代码 支持对可控类型的转换
if (!typeof(T).IsGenericType)
{
// 如果是非泛型的话 怎么判断是否非可空类型
if(可空类型)
return (T)Convert.ChangeType(convertibleValue,Nullable.GetUnderlyingType(typeof(T)));
else
return (T)Convert.ChangeType(convertibleValue, typeof(T));
}
else
{
Type genericTypeDefinition = typeof(T).GetGenericTypeDefinition();
if (genericTypeDefinition == typeof(Nullable<>))
{
return (T)Convert.ChangeType(convertibleValue,Nullable.GetUnderlyingType(typeof(T)));
但是有一个问题是 如果是非泛型的话 怎么判断是否非可空类型? 泛型?反射,可空类型
[解决办法]
非泛型用obj.GetType()方法获取类型。
[解决办法]
学习了,泛型用的比较少…
[解决办法]
Nullable<T> where T : struct
if(typeof(T).IsValueType) 这样?
但是MSDN明确地说了,可空类型都是System.Nullable<T>结构体的“实例”
所以if (!typeof(T).IsGenericType) 似乎是多余的
[解决办法]
if (default(T) == null) //可空类型