Здравствуйте, Slider_spb, Вы писали:
S_>Наткнулся на следующую проблему: Есть объект A. Он содержит в себе типизированный массив объектов B. При десериализации объекта A и массива в нем десериализация ни одного из объектов B еще не произошла, сооветственно они приходят пустыми. И лишь когда десериализаця объекта A завершена, происходит десериализация объектов Б, находящихся в массиве, но значения массива объекта A остаются пустыми. S_>Можно ли как-то оправлять порядком десериализации объектов и как решить данную проблему.
Проблемам классическая, что называется.
Решается построением графа зависимостей между объектами или ленивой процедурой инициализации.
Еще одна проблема которая может возникнуть в случае использования графа зависимостей — это рекурсивные ссылки между объектами (объект типа А ссылается на массив в котором лежит объект типа Б в котором есть ссылка на первый объект). Это лечится резрывом графа зависимостей с внесением информации о рекурсивном поле создающем рекурсивную связь в некоторую таблицу с отдельным проходом по ней и коррекцией объектов.
В ленивом варианте объекту передаются не сами ссылки, а идентификаторы ссылок (по сути их индексы) из глобальной таблицы. Далее все объекты грузятся и помещаются в эту таблицу. При доступе к свойствам происходит разрешение ссылки через глобальную таблицу. Этот подход требует лишней памяти в объектах для хранения идентификаторов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.