Question

I have this function to serialize a KnownNetowrks object to Binary Format:

const string FileNameBin = @".\knownnetworks.bin";

public static void SaveNetworksBin(KnownNetworks networks)
{
     Stream FileStream = File.Create(FileNameBin);
     BinaryFormatter serializer = new BinaryFormatter();
     serializer.Serialize(FileStream, networks);
     FileStream.Close();
}

KnownNetwork has the following structure:

[Serializable]
public class KnownNetworks
{
    public static LinkedList<Network> List { get; private set; }

    public KnownNetworks()
    {
        if (List == null)
            List = new LinkedList<Network>();
    }

    ...

 }

And class Network is also [Serializable].

However, when I call the function SaveNetworksBin, it always save a file whose size is 129 bytes, even if the parameter networks has a list that it is more full or less full. So I think for that reason LoadNetworksBin doesn't work (too).

public static KnownNetworks LoadNetworksBin()
{
    var result = new KnownNetworks();
    if (File.Exists(FileNameBin))
    {
        Stream FileStream = File.OpenRead(FileNameBin);
        BinaryFormatter deserializer = new BinaryFormatter();
        result = (KnownNetworks)deserializer.Deserialize(FileStream);
        FileStream.Close();
    }
    return result;
}

What's wrong? What should I change?

Was it helpful?

Solution

Your list is static and therefore don't belong to the KnownNetworks instance you're serializing.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top