Краткое описание проблемы:
Работаю с сохранением объектов в .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 //!!!
Т.е. третий класс, на который ссылаются обе переменных, создается два раза.
Теперь вопрос: как мне добиться того, чтобы сохранялась ссылочная целостность, т.е. после восстановления обе переменных ссылались на один и тот же класс.