我的名单对象具有以下属性:
[DataMember]
public ObservableCollection<personDetail> personContact
{
get
{
return _personContact;
}
set
{
if (value != _personContact)
{
_personContact = value;
NotifyPropertyChanged("personContact");
}
}
}
personDetail包含:
private string _name;
private string _phone;
private string _email;
以及get和set语句。
我正在尝试将personDetail添加到我的personContact属性...
我尝试了以下内容:
roster myRoster;
myRoster = roster.CreateNewRoster();
personDetail myPerson;
myPerson = personDetail.newPerson();
myPerson.name = ph.tbNameValue.Text.ToString();
myPerson.phone = ph.tbPhoneValue.Text.ToString();
myPerson.email = "None Yet";
myRoster.personContact.Add(myPerson);
以及:
myRoster.personContact.Add(new personDetail() {name = myPerson.name, phone = myPerson.email});
每当我尝试将myPerson添加到personContact时,我每次都会收到NullReferenceException ...
我可能正在做一些愚蠢的事情......你能确定我做错了什么吗?
谢谢,新年快乐!
答案 0 :(得分:4)
这表示没有任何内容将personContact
设置为空的ObservableCollection<personDetail>
。我建议CreateNewRoster()
在返回之前应该这样做。否则,自己动手:
myRoster.personContact = new ObservableCollection<personDetail>();
顺便说一句,您应该尝试遵循.NET命名约定,其中公共类型和属性使用PascalCase命名,导致类型名称为PersonDetail
和Roster
,以及属性Name
,Phone
,Email
和PersonContact
的名称。我还要将PersonContact
重命名为听起来更容易理解的内容 - 可能只是Contacts
?
答案 1 :(得分:3)
您需要将Roster.personContact
初始化为某个内容 - 例如空列表:
myRoster.personContact = new ObservableCollection<personDetail>();
答案 2 :(得分:1)
也许您从未向myRoster.personContact
分配任何内容,因此它仍为null
。
我还建议你关注微软Naming Guidelines。
答案 3 :(得分:1)
myRoster = roster.CreateNewRoster();
instanciate _personContact
否则,它似乎为null,然后在null对象上调用add。