我有一些序列化代码设置如下:
static void SerialiseObject(Object o, String path)
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(path, FileMode.Create);
formatter.Serialize(stream, o);
stream.Close();
}
static Object DeserialiseObject(String path)
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
Object o = (Object)formatter.Deserialize(stream);
stream.Close();
return o;
}
并且定义了以下成员的类:
[Serializable]
public class CircuitModel
{
public Dictionary<String, Bus> Buses { protected set; get; }
...
}
我填充字典,然后以下代码成功序列化和反序列化字典,所有Bus
对象都完好无损:
SerialiseObject(CircuitModel.Buses, "temp.bin");
Object o = DeserialiseObject("temp.bin");
但是当我尝试对以下内容做同样的事情时CircuitModel
:
SerialiseObject(CircuitModel, "temp.bin");
Object o = DeserialiseObject("temp.bin");
CircuitModel.Buses
已初始化,但为空。
我也尝试过使用ISerializable
(对于Bus
和CircuitModel
类)实现序列化并且遇到了完全相同的问题
知道为什么会发生这种情况吗?