首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

泛型,反照

2013-04-26 
泛型,反射本帖最后由 xiaoqiaoluanwu 于 2013-04-24 15:11:28 编辑下边这段代码 支持对可控类型的转换if (

泛型,反射
本帖最后由 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) //可空类型

热点排行