Проблема с Object Serialization
От: Konstantin Orlov  
Дата: 12.02.02 12:27
Оценка:
Краткое описание проблемы:
Работаю с сохранением объектов в .Net (на C#).
Использую двоичное сохранение (BinaryFormatter).
Есть две переменных класса: foo1 и foo2, в котором есть поле типа "object" (путь m_ob).
В эти две переменные заношу "адрес" третьего класса fooTarget:
  foo1.m_ob = fooTarget
  foo2.m_ob = fooTarget

В итоге справедливо такое отношение:
  foo1.m_ob == foo2.m_ob          //!!!

Делаю сохраниние первых двух классов (seriazation) в двоичный файл. Примечание: все три класса помечены как сохраняемые (Seriazable). Т.е. вызываю примерно так:
   formatter.Serialize(stream, foo1);
   formatter.Serialize(stream, foo2);

Все сохраняется ОК.
Далее пытаюсь прочитать (Deserialize) эти два класса из этого же файла:
   foo1 = (CFoo)formatter.Deserialize(stream);
   foo2 = (CFoo)formatter.Deserialize(stream);

Оба они восстанавливаются без ошибок, Но! Происходит следующее:
foo1.m_ob != foo2.m_ob          //!!!

Т.е. третий класс, на который ссылаются обе переменных, создается два раза.

Теперь вопрос: как мне добиться того, чтобы сохранялась ссылочная целостность, т.е. после восстановления обе переменных ссылались на один и тот же класс.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.