反射PropertyInfo.GetValue(对象)抛出DBNull异常

时间:2014-12-30 23:32:25

标签: c# reflection

我在困难时期应该是一段简单的代码。下面的代码循环遍历自定义类的属性,并从该类对象中获取值并将其填充到数据行中。

DataRow row = table.NewRow();

foreach(PropertyInfo p in sfa.GetType().GetProperties())
{                    
    row[p.Name] = p.GetValue(sfa);
}

问题是我得到的错误:

  

无法将列'columnName'设置为null。请改用DBNull。

它正在阻塞的特定列是DateTime类型属性。如果这就是它想要的话,我很擅长使用DBNull。我只是不知道,也无法弄明白?如果它不喜欢DBNull,如何告诉我想要给它的row.column交集System.null

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您可以检查null或只使用null-coalescing operator:

 row[p.Name] = p.GetValue(sfa) ?? DBNull.Value;