反射给实体类赋值时候一个类型转换的问题
当我的 实体类属性的类型为 int? datetime? 的时候,给属性赋值就会出现
"类型“System.String”的对象无法转换为类型“System.Nullable`1[System.Int32] 这样的的错误
我的赋值是这么写的
p.SetValue(t, Convert.ChangeType(form[p.Name], p.PropertyType), null);
请问怎么解决
"类型“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];
}
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{}
跳过,不过这样可以效率比较差
我是用
TRY
{
p.SetValue(t, Convert.ChangeType(form[p.Name], p.PropertyType), null);
}
CATCH{}
跳过,不过这样可以效率比较差
作者: l13873666736 发布时间: 2011-06-15