Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2014, 11:30   #1
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию Сериализация

Есть класс, который поддерживает бинарную сериализацию. Нужно исключить из сериализации одно его свойство, и обеспечить восстановление значения этого свойства после десериализации.
Лета вне форума Ответить с цитированием
Старый 24.09.2014, 11:55   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Используйте метку [NonSerialized]
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 24.09.2014, 12:03   #3
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию

Я использую ее. Но когда восстанавливаю обьект - свойству NonSerialized дается значение 0 (int), а не то, которое было до сериализации.
Мне нужно каким-нибудь образом после десериализации узнать какое значение было у этого свойства.
Лета вне форума Ответить с цитированием
Старый 24.09.2014, 12:10   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

тогда используйте метку [Serialized]
Устраните противоречие в задаче и будет вам счастье.. а то и исключить надо и восстановить.

Цитата:
Сообщение от Лета Посмотреть сообщение
Мне нужно каким-нибудь образом после десериализации узнать какое значение было у этого свойства.
Нету такого способа если данные не были включены в сериализацию.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 24.09.2014 в 12:19.
WorldMaster вне форума Ответить с цитированием
Старый 24.09.2014, 12:23   #5
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию

Поняла все, спасибо!
Просто думала, может, через метод там какой-нибудь поможет
Лета вне форума Ответить с цитированием
Старый 24.09.2014, 12:29   #6
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Лета Посмотреть сообщение
Поняла все, спасибо!
Просто думала, может, через метод там какой-нибудь поможет
Какой может быть метод если данных в сериализованном наборе нету. Значит надо пересматривать задачу в целом раз возникает такое узкое место.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 24.09.2014, 13:50   #7
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию

Я уточнила задание. Это NonSerialized поле вычисляется на основе других(сериализированных) свойств. И нужно, чтобы при десериализации обьекта значение этого поля "вычислилось".
Лета вне форума Ответить с цитированием
Старый 24.09.2014, 13:55   #8
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Лета Посмотреть сообщение
Я уточнила задание. Это NonSerialized поле вычисляется на основе других(сериализированных) свойств. И нужно, чтобы при десериализации обьекта значение этого поля "вычислилось".
Тогда вам необходимо просто грамотно описать метод доступа к свойству.

Код:
[NonSerialized]
public object MyProperty
{
  get { return (вычисления)  }
}
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 24.09.2014, 14:01   #9
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию

Вычисление должно происходить именно при десериализации. Мне сказали, что бинарная сериализация такое позволяет. Только не могу найти способ как это реализовать (

Там в методе десериализации второй необязательный параметр типа HeaderHandler. Что это за тип? Может, его можно как-то использовать?

Последний раз редактировалось Stilet; 24.09.2014 в 14:14.
Лета вне форума Ответить с цитированием
Старый 24.09.2014, 14:13   #10
Лета
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 44
По умолчанию

Уже решила проблему. Вечером напишу как.
Лета вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сериализация вектора 3dg_fan Общие вопросы по Java, Java SE, Kotlin 4 26.11.2011 17:54
Сериализация Gregor Компоненты Delphi 10 16.04.2011 12:18
Сериализация Вов@ныч Общие вопросы Delphi 2 06.07.2009 09:54
сериализация Crucian Общие вопросы C/C++ 5 18.11.2007 16:37