开发者

adding object to collection

My roster object has the following property:

   开发者_JAVA技巧 [DataMember]
    public ObservableCollection<personDetail> personContact
    {
        get
        {
            return _personContact;
        }
        set
        {
            if (value != _personContact)
            {
                _personContact = value;
                NotifyPropertyChanged("personContact");
            }
        }
    }

personDetail contains:

    private string _name;
    private string _phone;
    private string _email;

and the get and set statements as well.

I'm trying to add the personDetail to my personContact property...

I've tried the following:

            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);

as well as:

myRoster.personContact.Add(new personDetail() {name = myPerson.name, phone = myPerson.email});

Each time I'm getting a NullReferenceException when ever I try to add myPerson to personContact...

I'm probably doing something dumb... Can you identify what I'm doing incorrectly?

Thanks and Happy New Year!


That suggests nothing's setting personContact to an empty ObservableCollection<personDetail> to start with. I suggest that CreateNewRoster() should probably do that before returning it. Otherwise, do it yourself:

myRoster.personContact = new ObservableCollection<personDetail>();

As an aside, you should really try to follow the .NET naming conventions, where public types and properties are named with PascalCase, leading to type names of PersonDetail and Roster, as well as property names of Name, Phone, Email and PersonContact. I'd also rename PersonContact to something which sounds more understandable - possibly just Contacts?


You need to initialize Roster.personContact to something - an empty list for example:

myRoster.personContact = new ObservableCollection<personDetail>();


Perhaps you have never assigned anything to myRoster.personContact so it is still null.

I'd also suggest that you follow the Microsoft Naming Guidelines.


Does myRoster = roster.CreateNewRoster(); instanciate _personContact Otherwise it seems that it is null and then you call add on a null object.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜