Нужно сериализовать и десериализовать граф объектов. В графе могут существавать ссылки не только между соседними узлами графа, а любыми.
В частночти, есть коллекция нодов, в каждом ноде есть своя коллкция ссылок. Объект ссылка хранится в обеих нодах, которые она связывает.
Думаю, что народ уже решал подобную задачку с сериализацией графа объектов. Поделитесь решением или поделитесь мыслями.
Бинарная сериализация не подходит.
--
То, что вы уникальны еще не значит, что от вас есть толк
Mab>Перед тем, как изобретать собственный велосипед, неплохо бы знать, чем именно не подходит стандартный?
1. Нужна совместимость с предыдущими версиями графа. Есть конечно выход — это ISerializable интерфейс, он позволяет решать такие проблемы.
2. Нужно полученный xml не сохранять, как отдельный файл, а включать его, как отдельную ветвь в xml файл проекта поэтому ни binary ни soap formatters не подходят.
Остается XmlSerializer, но он досточно прмитивен. Как в нем при десериализации проверять, что объект уже создан и нужно просто восстановить ссылку на него не известно. Да это и не возможно помоему. Поэтому и спрашиваю методы решения проблемы.
--
То, что вы уникальны еще не значит, что от вас есть толк
U>2. Нужно полученный xml не сохранять, как отдельный файл, а включать его, как отдельную ветвь в xml файл проекта поэтому ни binary ни soap formatters не подходят.
Не понял. Все эти форматтеры могут писать в Stream. Что мешает потом этот stream включить куда требуется?
U>Остается XmlSerializer, но он досточно прмитивен.
Он не предназначен для сериализации произвольных графов объектов.
Здравствуйте, mrUmka, Вы писали:
U>Нужно сериализовать и десериализовать граф объектов. В графе могут существавать ссылки не только между соседними узлами графа, а любыми. U>В частночти, есть коллекция нодов, в каждом ноде есть своя коллкция ссылок. Объект ссылка хранится в обеих нодах, которые она связывает. U>Думаю, что народ уже решал подобную задачку с сериализацией графа объектов. Поделитесь решением или поделитесь мыслями.
U>Бинарная сериализация не подходит.
Здравствуйте, mrUmka, Вы писали:
J>>Матрица связанности?
U>Да.
Чего да?
Если граф — суть набор списков с сложной структурой перекрестных ссылок, о запихать информацию о ребрах в матрицу связанности и сохранить ее плюс вершины.
В общем идея в том, что бы преобразовать граф из представления с которым удобно работать в представление, которое удобно сохранять.
Здравствуйте, jhfrek, Вы писали:
J>Если граф — суть набор списков с сложной структурой перекрестных ссылок, о запихать информацию о ребрах в матрицу связанности и сохранить ее плюс вершины.
Не знаю, что ты имеешь в виду под матрицей связности, Бывают матрицы смежности и инцидентности, но ни одна из них не годится для эффективного представления графа, поскольку ее размер растет нелинейно. Если уж сохранять, то списки дуг.
Здравствуйте, Mab, Вы писали:
J>>Если граф — суть набор списков с сложной структурой перекрестных ссылок, о запихать информацию о ребрах в матрицу связанности и сохранить ее плюс вершины.
Mab>Не знаю, что ты имеешь в виду под матрицей связности, Бывают матрицы смежности и инцидентности, но ни одна из них не годится для эффективного представления графа, поскольку ее размер растет нелинейно. Если уж сохранять, то списки дуг.
Их самых. А что сохранять — не важно, вопрос в преобразовании исходного графа в что-то удобное для записи.