Хобрук: Ваш путь к мастерству в программировании

пометка кнопки WinForms как сериализуемой

Это моя самая первая программа для сериализации.

Произошла ошибка при попытке сериализовать элемент управления "кнопка".

public Form1()
{
     InitializeComponent();
     CheckSerialization();                
     Button btn = btnSerialized;            
}

public void CheckSerialization()
{
     Stream write = File.OpenWrite(@"C:\ser.bin");
     BinaryFormatter serial = new BinaryFormatter();
     serial.Serialize(write, btnSerialized);
     write.Close();
}

private void btnSerialized_Click(object sender, EventArgs e)
{
     FileStream fs = new FileStream(@"C:\ser.bin",FileMode.Open);
     BinaryFormatter bf= new BinaryFormatter();
     object obj = bf.Deserialize(fs);
     Button button12 = (Button)obj;
     button1 = button12;
     button1.Location = new Point(0, 0);
}

Тип «System.Windows.Forms.Button» в сборке «System.Windows.Forms, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089» не помечен как сериализуемый. **

Как пометить этот объект как сериализуемый?



Ответы:


1

Найдите строку, похожую на public partial class Form1 : Form. Прямо над ним поместите [Serializable]. Это отмечает ваш класс для сериализации. Однако вам нужно будет контролировать собственную сериализацию, поскольку, как указано ниже, объекты пользовательского интерфейса не сериализуются. Для этого посмотрите на интерфейс ISerializable. .

Дополнительные сведения о SerializableAttribute можно найти здесь.

30.08.2010

2

Вы не знаете. Тип должен быть помечен как Serializable, а не объект.

30.08.2010

3

Вы не можете сериализовать объекты Winforms (или другие объекты пользовательского интерфейса, вообще говоря)

30.08.2010

4

ЕСЛИ вы пытаетесь экспортировать объект или перезагрузить объект с предоставленными пользователем значениями свойств для динамичности, то почему бы вам не использовать System.Reflection. Здесь: http://www.codeproject.com/Tips/715891/Compiling-Csharp-Code-at-Runtime

16.06.2014
Новые материалы

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..