0

我有这个函数可以将 KnownNetowrks 对象序列化为二进制格式:

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 具有以下结构:

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

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

    ...

 }

而类网也是[Serializable]

但是,当我调用该函数时SaveNetworksBin,它总是保存一个大小为 129 字节的文件,即使参数networks有一个更满或更少满的列表。所以我认为出于这个原因LoadNetworksBin(也)不起作用。

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

怎么了?我应该改变什么?

4

1 回答 1

3

您的列表是静态的,因此不属于KnownNetworks您正在序列化的实例。

于 2013-10-30T11:23:24.603 回答