![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Всем привет.
Есть у меня несколько библиотек классов, я над ними создал свои оболочки и их юзаю. Стал вопрос о серилизации моих объектов в MemoryStream. Сторонние библиотеки серилизацию не допускают. Не допускают они, честно говоря, многое, поэтому оболочки и написал. Так вот, свои классы я пометил как [Serializable], реализовал в них ISerializable, а уже в нем, в GetObjectData(), ручками серилизую поля чужих классов. В принципе получается. Но вот интересная фигня (пишу псевдокод) : Есть сторонние классы
От них я сделал
так вот, если раскомментировать строчки в MyВ, то все нормально получается, в конструкторе B(SerializationInfo info, StreamingContext context) создается а, aList заполнен. При этом, в десерилизации поток выполнения входит в MyA(SerializationInfo info, StreamingContext context). Но если оставить как есть, то aList создан, но содержит null вместо items, в конструктор MyA поток не входит. Подскажите, в чем ошибка, плиз. Это сообщение отредактировал(а) tol05 - 17.4.2007, 10:05 -------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Это прикол с так называемым "zeroed object state" -- объекты при бинарной десериализации создаются минуя конструктор (!), и все поля содержат дефолтные значения - например, int-ы будут в 0, bool - в false, ссылки - null. -------------------- ![]() |
|||
|
||||
| Grub |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
Попробуй так info.AddValue("myaList", aList,typeof(List<MyA>));
ЗЫ:Если оболочка MyA сериализуема, то кустомную сериализацию MyB можно было не делать. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
for mr.DUDA - Херовый прикол
for Grub - пока не помогает -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
tol05, ну что сделать если мелкомягкие так придумали... Ручками придётся поля заполнять, раз ISerializable поюзали.
-------------------- ![]() |
|||
|
||||
| Grub |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
смотри пример
|
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
Короче, зафиксал я проблему. Баг нашел при десерилизации списка.
Пример Grub работает, да и мой тоже. Хлопотное дело, кустомная серилизация, внимания требует. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |