关于PropertyInfo的SetValue方法与可空类型

凋零的老树 2010-08-24 03:09:57
private void SetModelValue(BaseModel model, SqlDataReader dr)
{
Type t = this.GetType();
PropertyInfo[] myPropertyInfo;
myPropertyInfo = t.GetProperties();

for (int i = 0; i < myPropertyInfo.Length; i++)
{

//实体类中定义了可空数据类型就过不去,不定义可空类型就能过去 为什么?
myPropertyInfo[i].SetValue(model, ValueConversion.ConvertDBNullValue(dr[myPropertyInfo[i].Name]), null);
}
}
}


这是一个给实体类赋值的方法
...全文
380 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
凋零的老树 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 feng5799 的回复:]
C# code

object obj = dr[dr[myPropertyInfo[i].Name]
if(obj != null)
{
myPropertyInfo[i].SetValue(model,obj,null);
}
[/Quote]

判断了,问题不在obj,问题是model的属性是可空类型,不能被SetValue这个方法赋值
feng5799 2010-08-24
  • 打赏
  • 举报
回复
先判断一下值是否为null
feng5799 2010-08-24
  • 打赏
  • 举报
回复

object obj = dr[dr[myPropertyInfo[i].Name]
if(obj != null)
{
myPropertyInfo[i].SetValue(model,obj,null);
}

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧