反射给实体类赋值时候一个类型转换的问题

当我的 实体类属性的类型为 int? datetime? 的时候,给属性赋值就会出现

"类型“System.String”的对象无法转换为类型“System.Nullable`1[System.Int32] 这样的的错误

我的赋值是这么写的
p.SetValue(t, Convert.ChangeType(form[p.Name], p.PropertyType), null);

请问怎么解决

作者: ayun00   发布时间: 2011-06-15

关键是你这个form[p.Name]传给他的值能转换成int类型吗

作者: zhou_xuexi   发布时间: 2011-06-15

传入 Nullable<int>。int? 其实就是Nullable<int>。

作者: caozhy   发布时间: 2011-06-15

初步解决....
  Type propertyType = p.PropertyType;
  if (propertyType.IsGenericType && propertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
  {
  propertyType = propertyType.GetGenericArguments()[0];
  }

作者: ayun00   发布时间: 2011-06-15

当数据库里字段内容为空时就会这可样
我是用
TRY
{

 p.SetValue(t, Convert.ChangeType(form[p.Name], p.PropertyType), null);
}
CATCH{}
跳过,不过这样可以效率比较差

作者: l13873666736   发布时间: 2011-06-15