首页 新闻 会员 周边

如果判断一个属性是否为"DateTime?"类型

0
悬赏园豆:50 [已解决问题] 解决于 2008-09-05 08:49

  /// <summary>
        /// 获取或设置 有效日期(截止日期)
        /// </summary> 
  public DateTime? ValidDate
  {
   get { return _validDate; }
   set { _validDate = value; }
  }

 

PropertyInfo property = entity.GetType().GetProperty("ValidDate");

这里这个“property ”如果判断他是否为"DateTime?"类型,或"int?"类型??

 

 

snryang的主页 snryang | 初学一级 | 园豆:24
提问于:2008-09-04 11:43
< >
分享
最佳答案
0

//Sorry,下面这行原来是错的..

Type property = entity.GetType().GetProperty("ValidDate").PropertyType;

//PropertyInfo property = entity.GetType().GetProperty("ValidDate");

if(property.IsGenericType)

{

  if(property.GetGenericTypeDefinition()==typeof(Nullable<>)

  {

  //是 **? 类型

  Type originalType = property.GetGenericArguments()[0];

      if(originalType == typeof(int)

      {

         // int?

      }

      else if(originalType == typeof(DateTime)

      {

         // DateTime?

       }

      // ...

  }

}

 

关于范型与反射,我做了张表,也许对你有用:

http://www.cnblogs.com/deerchao/archive/2008/06/16/1222936.html

deerchao | 大侠五级 |园豆:8367 | 2008-09-04 12:23
其他回答(4)
0

转换类型的时候try catch下把

value应该是个object的

应该没有办法可以判断除了 try catch

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2008-09-04 11:51
0

用property.PropertyType进行判断,看看是不是System.Nullable'1[System.DateTime],就可以了。

TerryLee | 园豆:3300 (老鸟四级) | 2008-09-04 12:00
0

deerchao 可能漏写了,应该是这样 //刚刚看到deerchao 已经更正了~_~

 

            PropertyInfo property = entity.GetType().GetProperty("ValidDate");

            if (property.PropertyType.IsGenericType)
            {
                if (property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
                {
                    if (property.PropertyType.GetGenericArguments()[0] == typeof(DateTime))
                    {
                    }
                }
            }

eaglet | 园豆:17139 (专家六级) | 2008-09-04 13:47
0

我觉得这样就行

if(x==null)

return true;

DateTime dt;

if(DateTime.TryParse(x ,out dt))

return true;

return false;

重典 | 园豆:2442 (老鸟四级) | 2008-09-04 15:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册