Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> бинарная сериализация без инфы о классе 
:(
    Опции темы
gambit
Дата 22.3.2011, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



Добрый день. Проблема в сериализации дессериализации. Косяк в том, что сериализатор пишет всю инфу о сборке, и если сборка изменилась, то при десериализации на приведении типов все падает, так как сборки не совпадают. Как это обойти?? Как засавить не писать сериализатор всю эту инфу?? Ибо проект пишется и сборка постоянно меняется, тем более что после релиза тоже что то может поменятся, и после каждого пука у нас приличная по размерам база становится недоступна.

Добавлено через 4 минуты и 26 секунд
Вариант с реализацией ISerializable нам поможет?? Спрашиваю потому что классов очень много, и правка сейчас займет много времени, а может эт вообще не то.
Код

 [Serializable]
    public class A : ISerializable
    {
        public int AAAA { get; set; }
        public int BBBB { get; set; }

        public A() { }

        protected A(SerializationInfo info, StreamingContext context)
        {
            AAAA = (int)info.GetValue("AAAA", typeof(int)); 
            BBBB = (int)info.GetValue("BBBB", typeof(int));
        }

        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("AAAA", AAAA);
            info.AddValue("BBBB", BBBB);
        }
    }


PM MAIL ICQ Skype   Вверх
mihryak
Дата 22.3.2011, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



BinaryFormatter.AssemblyFormat Property  не пробовал? во втором фреймворке работал бажно, быть может, уже починили
PM MAIL ICQ   Вверх
gambit
Дата 22.3.2011, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



Еще утром пробовал - не починили((
PM MAIL ICQ Skype   Вверх
Voyager
Дата 23.3.2011, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 3
Всего: 18



А что если попробовать вариант - после сериализации в MemoryStream подчищать информацию о классе в буфере потока, а при десиреализации добавлять всегда актуальную, чтобы не падало. Разобрать формат бинарника и решить эту проблему с такой позиции - вариант?
PM   Вверх
jonie
Дата 23.3.2011, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(gambit @  22.3.2011,  13:32 Найти цитируемый пост)
Косяк в том, что сериализатор пишет всю инфу о сборке, и если сборка изменилась, то при десериализации на приведении типов все падает, так как сборки не совпадают. Как это обойти?? Как засавить не писать сериализатор всю эту инфу?? Ибо проект пишется и сборка постоянно меняется, тем более что после релиза тоже что то может поменятся, и после каждого пука у нас приличная по размерам база становится недоступна.

а оно не смотрит на конфигурацию приложения в части редиректа версий?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
gambit
Дата 23.3.2011, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



Цитата(Voyager @  23.3.2011,  00:25 Найти цитируемый пост)
А что если попробовать вариант - после сериализации в MemoryStream подчищать информацию о классе в буфере потока, а при десиреализации добавлять всегда актуальную, чтобы не падало. Разобрать формат бинарника и решить эту проблему с такой позиции - вариант? 

при таком подходе проще выкинуть всю сериализацию, и написать свою.

Цитата(jonie @  23.3.2011,  10:02 Найти цитируемый пост)
а оно не смотрит на конфигурацию приложения в части редиректа версий? 

понятия не имею
PM MAIL ICQ Skype   Вверх
mihryak
Дата 23.3.2011, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



Цитата(jonie @  23.3.2011,  11:02 Найти цитируемый пост)
а оно не смотрит на конфигурацию приложения в части редиректа версий? 

редирект - тоже не слишком удобная штука, надо не забывать обновлять
PM MAIL ICQ   Вверх
Voyager
Дата 23.3.2011, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 3
Всего: 18



>>при таком подходе проще выкинуть всю сериализацию, и написать свою.
При вашем подходе вы хотите многого при минимуме телодвижений. smile
Поизучайте в рефлекторе как работает сериализатор, авось какие мысли возникнут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.