我正在尝试以这种格式填充对象列表,以便它匹配我所需的API的JSON.NEt输出。但是我在从.Add()开始的整个块上得到一个NullReferenceException ...我错过了什么?
foreach(var item in emailsToUpload.payload)
{
hubPayload.Add(new HubEmailItem()
{
email = item.Email, properties =
{ new HubEmailTuple() { property = "date", value = (DateTime.Now).ToString("d") },
new HubEmailTuple() { property = "other property", value = "other value" }
}
});
}
更新:
public class HubEmailItem
{
public String email { get; set; }
public List<HubEmailTuple> properties { get; set; }
}
答案 0 :(得分:2)
您不能将此语法用于此类通用列表。
properties =
{ new HubEmailTuple() { property = "date", value = (DateTime.Now).ToString("d") },
new HubEmailTuple() { property = "other property", value = "other value" }
}
您应该添加new List<HubSpotEmailTuple>
properties = new List<HubSpotEmailTuple>
{ new HubEmailTuple() { property = "date", value = (DateTime.Now).ToString("d") },
new HubEmailTuple() { property = "other property", value = "other value" }
}
注意:这是有效的:
int[] a = {0, 2, 4, 6, 8};
但这不是:
// wrong
List<int> a = {0, 2, 4, 6, 8};
// correct
List<int> a = new List<int> {0, 2, 4, 6, 8};
查看文档:{{3}}
答案 1 :(得分:1)
在初始化List的情况下,唯一可以抛出此异常的是您正在迭代的项目之一。您正在使用Email属性,似乎其中一个项目为null并导致异常。
email = item.Email //causes NullReferenceException when item is null
您可以通过在item == null
为真时触发的foreach循环的第一个大括号设置条件断点来检查是否确实如此。