|
Custom Serialization : десериализация объекта с ArrayList членом.
|
|||
---|---|---|---|
#18+
C# (FW 3.5) У меня имеется класс (сериализуемый), в котором только одно открытое поле типа ArrayList. Затем свойство ArrayList заполняется объектами класса, только сериализуемого вручную(!). Сериализация выполняется хорошо (это видно из слепка, помещённого в файл), а вот десериализация восстанавливает ArrayList неполностью: память под "массив" выделяется, а сами объекты (класса наследуемого от ISerializable) = null . Вопрос, почему? Ниже пример, описывающий мою проблему: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
Спасибо, заранее. PS XML Сериализацию не предлагать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2013, 16:45 |
|
Custom Serialization : десериализация объекта с ArrayList членом.
|
|||
---|---|---|---|
#18+
Фесенко Олег, класс Nickname реализует интерфейс ISerializable и содержит конструктор с аргументами SerializationInfo/StreamingContext. Таким образом ты сам решаешь что и как сериализовывать. Метод GetObjectData вызывается при сериализации. В нем ты сохраняешь только поле Name. Конструктор вызывается при десериализации. В нем читаешь значение в поле Text. Соотственно другие поля просто игнорируются. Добавь в эти методы сохранение/восстановление других полей класса и увидишь разницу: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
P.S. Обрати внимание что конструктор поддерживающий сериализацию лучше сделать protected (если класс создается для наследования) или private. P.S. Похоже в коде сериализации есть ошибка. Ты сохраняешь поле Name, а восстанавливаешь поле Text. Ты уверен что именно так и нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2013, 17:14 |
|
|
start [/forum/topic.php?fid=20&tid=1404024]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 161ms |
0 / 0 |