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 и даже не записать эту информацию в байтовый буфер для экземпляра. из Б
Это не совсем правильно, но это может быть лучшим решением.
Есть ли более чистый способ справиться с этой ситуацией?
1 ответ
Вы можете использовать подход, аналогичный стандартному BinaryFormatter из BCL: использовать ObjectIDGenerator и сохранять идентификатор ссылки вместо объекта в случае циклических ссылок