VB.NET - Пользовательская Сериализация и Циклические ссылки, там чистое решение?

Я реализую некоторую пользовательскую сериализацию (к массиву байтов) и столкнулся с проблемой, обрабатывающей циклические ссылки.

Пример:

Class A
  public MyBs as new List(of B)
End class

Class B
  public MyParent as A
  public MiscInt1 as integer
  public MiscInt2 as integer
End Class

При сериализации A, я должен сериализировать каждый экземпляр B.

Однако у меня есть проблема при сериализации B.

Как я записываю родителя B, не вызывая бесконечный цикл?

Идея:

Если я знаю, что экземпляр B будет только когда-либо сериализироваться посредством сериализации экземпляра A, то я могу обработать установку ссылки MyParent от экземпляра A и даже не записать ту информацию в буфере байта для экземпляра B

Это не чувствует себя совершенно правильным, но это могло бы быть лучшее решение.

Существует ли более чистый способ обработать эту ситуацию?

1
задан Brian Webster 12 July 2011 в 16:40
поделиться

1 ответ

Вы можете использовать подход, аналогичный стандартному BinaryFormatter из BCL: используйте ObjectIDGenerator и сохраните идентификатор ссылки вместо объекта в случае циклических ссылок

2
ответ дан 2 September 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: