我得到这个:
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;
}
Run Code Online (Sandbox Code Playgroud)
异常开启string val = values.GetValue(property.Name).ToString();。我之前必须检查空值吗?
我要冒险并建议没有提供的property.Name财产values。所以你对values.GetValue的调用返回一个null。当您尝试对该 null 值执行 ToString() 时,它会抱怨。
简而言之,您的值变量包含什么?
更新:
根据提供的信息,values 是 FormsCollection,您的属性集合很可能包含一些您没有 FormsCollection 字段的属性。发生的情况是,您尝试获取此字段,它返回一个空值,然后您对其调用 ToString,导致一切都中断。
我会反转我的策略并循环遍历我的 FormsCollection,在遇到属性时一一获取它们。另一种方法是保留它,并在执行 ToString 之前检查是否为 null。
PS:我希望表单上表示的所有属性都是字符串,否则事情会崩溃。