我得到这个:
private object setReportValues(object report, FormCollection values)
{
PropertyInfo[] properties = report.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
string val = values.GetValue(property.Name).ToString();
property.SetValue(report, val, null);
}
return report;
}
string val = values.GetValue(property.Name).ToString();
例外。我是否必须检查空值? 最佳答案
我要出去建议不要在property.Name
中使用提供的values
属性。因此,您对values.GetValue的调用将返回null。当您尝试对该空值执行ToString()时,它会抱怨。
简而言之,您的values变量包含什么?
更新:
利用提供的值是FormsCollection的信息,很可能您的属性集合包含一些您没有FormsCollection字段的属性。发生的情况是,您尝试获取此字段,该字段返回空值,然后在该字段上调用ToString,从而导致一切中断。
我会颠倒我的策略,并在我的FormsCollection中循环遍历,从而在遇到属性时将它们一一对应。另一种方法是保持它不变,并在执行ToString之前检查null。
PS:我希望您在表单上表示的所有属性都是字符串,否则事情会破裂。
关于c# - 获取一个NullReferenceException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11611936/