次のようにシリアル化コードを設定しました。
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
たが、まったく同じ問題がありました
なぜこれが起こるのかについて何か考えはありますか?