Как сериализовать два объекта (Контейнеры)? Пример
class FirstContainer{
List<First> = new First();
}
class SecondContainer{
List<Second> = new Second();
}
class First{
string str;
public First(string s){
str = s;
}
}
class Second{
First F; // Не должна потеряться ссылка!
public Second(First f){
F = f;
}
}
Как правильно сериализовать два объекта что бы не потерялась ссылка на First?
P.S. Классы наведены для примера
Если вас устраивает бинарная сериализация, то можно использовать класс BinaryFormatter.
Ваш огрызок код даже не компилируется, но, допустим, ошибки исправлены и всё с ним в порядке. Создайте класс-оболочку для ваших двух объектов:
[Serializable]
class Wrapper
{
public FirstContainer con1 = new FirstContainer();
public SecondContainer con2 = new SecondContainer();
}
Он обязательно должен быть помечен атрибутом Serializable, так же как и все остальные ваши классы.
Код (де)сериализации элементарен:
var wrapper = new Wrapper();
var formatter = new BinaryFormatter();
using (var stream = new FileStream("test.bin", FileMode.Create))
{
formatter.Serialize(stream, wrapper);
}
using (var stream = new FileStream("test.bin", FileMode.Open))
{
wrapper = (Wrapper)formatter.Deserialize(stream);
}
Недостаток этого подхода в том, что не получится обмениваться таким образом данными с другими платформами, кроме .NET.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости