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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BinaryFormatter. Сериализация класса, не работает 
:(
    Опции темы
CasperSC
Дата 21.3.2010, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 1



Я в своём классе использую таймер в качестве поля и обработчик Tick, ну чтобы каждый экземпляр будильника проверял себя сам на срабатывание. Теперь не работает BinnaryFormater. Дело в том, что я до этого этот класс сериализовывал. Потом в его поля добавил поле Timer и обаботчик Tick ну выполняю в обаботчике определённые действия, но теперь не  сохранить класс в файл, абез того мн никак, мне нужно полюбом как-то сохранить клас в файл. Что делать? убирать из класса таймер и пытаться сделать обработчик за пределами класса? Много конечно придётся перписывать или есть другой способ? Вот ошибка:

Код

Цитата:Тип "System.Windows.Forms.Timer" в сборке "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" не помечен как сериализуемый.



Объясните пожалуйста кто нибудь, что вообще за беда с этими сериализациями? Что можно сериализовать, класс содержащий только данные? Таймер нельзя, чтоли использовать?


PM MAIL   Вверх
uranpro
Дата 21.3.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



если написано, то значит нельзя =) напиши свой таймер, или не сохраняй ссылку на него в Serializable классе. сериализовать DateTime и TimeSpan нельзя, используй такой трюк
Код

string _MyDate;
public DateTime MyDate
{
get { return DateTime.Parse(_MyDate); }
set { _MyDate = value.ToString(); }
}



--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
CasperSC
Дата 21.3.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 1



Таймер чисто не сериализовывается, а дата до этого сохранялась. Помечал поле public Timer как [NonSerialized] начинает работать сохранение, а вот после загрузки, когда я нажимаю на кнопке будильника "Изменить", то появляется ошибка. То есть из-за того, что таймер не был сериализован. Вообще теперь не знаю, что делать.
PM MAIL   Вверх
nikitao
Дата 21.3.2010, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


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

Репутация: 4
Всего: 26



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


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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