我得到这个:

    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/

10-12 12:41
查看更多