ptr0x01
ptr0x01

Reputation: 637

DeSerializing a List not working

I'm saving a list of my class using serialization. This part works perfectly, when I try to deserialize however, it doesn't do anything.

private class Company : ISerializable
{
    public string Name;
    public System.IO.FileSystemWatcher Watch;
    public string Email;
}

The method:

public Company(SerializationInfo info, StreamingContext ctxt)
{
    Name = (String)info.GetValue("Name", typeof(string));
    Watch.Path = (String)info.GetValue("Watch Path", typeof(string));
    Email = (String)info.GetValue("Email address", typeof(string));
}

And finally the serialization itself:

Stream stream = File.Open(User + ".osl", FileMode.Create);
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, CompanyList);
stream.Close();

CompanyList is the list holding the Company class objects. When I check the file it is all there perfectly. However, when I try to deserialize to the CompanyList it doesn't work. It goes through without an error it just doesn't give back any information.

I only just started using serialization so I'm sure I messed up something.

Edit Deserialization code:

        public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {
            info.AddValue("Name", Name);
            info.AddValue("Watch Path", Watch.Path);
            info.AddValue("Email address", Email);
        }

It looks like this. Then I just call it casting it as a List of Companies: (List<Company>)bformatter.Deserialize(stream);

Upvotes: 0

Views: 540

Answers (1)

aL3891
aL3891

Reputation: 6275

It is likely that the deserialization constructor throws an exception because the FileSystemWatcher is null.

You're setting the Path property of the Watch object, but you don't initialize the actual Watch object, at least not in the code you have shown here.

Upvotes: 1

Related Questions