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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сериализация объектов 
V
    Опции темы
MedvedDima
Дата 15.12.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте! Вот такой вопрос возник у меня:
Есть программа, которая подключаеться к серверу и собирает запрос(по типу как в ацессе). Делаю сериализацию объектов (ComboBox.SelectedItem, ListBox.SelectedItem и CheckedListBox.CheckedItems), для того чтоб можно было востановить запрос позже. Но при попытке сериализации выскакивает ошибка "Для объекта ComboBox.SelectedItem(ListBox.SelectedItem, CheckedListBox.CheckedItems) не указан атрибут Serializable". Как быть в данной ситуации?

класс в котором все храниться:
Код

[Serializable]
    class DocumentSerialize
    {
        public Object database;
        public Object select;
        public Object from;
        public string query;

        public DocumentSerialize(Object db, Object slct, Object frm, string qry)
        {
            database = db;
            select = slct;
            from = frm;
            query = qry;
        }
    }



код попытки сериализации:
Код

DocumentSerialize serialObj = new DocumentSerialize(comboBox1.SelectedItem, select.CheckedItems, from.SelectedItem, query);

            FileStream f = new FileStream("dbworck.bin", FileMode.Create);
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(f, serialObj); // сохранение объекта d в потоке f
            f.Close();


Это сообщение отредактировал(а) MedvedDima - 15.12.2009, 21:41
PM MAIL   Вверх
MedvedDima
Дата 17.12.2009, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сериализация объектов:
Код

private void button1_Click_1(object sender, EventArgs e)
        {
            saveFileDialog1.DefaultExt = "dbw";
            saveFileDialog1.AddExtension = true;            
            saveFileDialog1.OverwritePrompt = true;
            saveFileDialog1.Filter = "(*.dbw)|*.dbw";
            // открытие диалога сохранения файла
            saveFileDialog1.ShowDialog();
            if (saveFileDialog1.FileName != "")
            {
                // сохранение в масив индексов выделенных объектов в CheckedListBox
                int[] sel_index = new int[select.Items.Count];
                for (int i = 0; i < select.Items.Count; i++)
                {
                    if (select.GetItemChecked(i))
                    {
                        sel_index[i] = i;
                    }
                }
                // класс хранящий данные о выбраных параметрах запроса
                DocumentSerialize serialObj = new DocumentSerialize(comboBox1.SelectedItem, sel_index, from.SelectedItem, query);
                // файловый поток для создания файла
                FileStream f = new FileStream(saveFileDialog1.FileName, FileMode.Create);
                // объект для двоичной сериализации
                BinaryFormatter bf = new BinaryFormatter();
                // выполнение сериализации объекта
                bf.Serialize(f, serialObj);
                // закрытие файлового потока
                f.Close();
            }
        }


Десериализация объектов:
Код

private void button2_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "(*.dbw)|*.dbw";
            openFileDialog1.ShowDialog();
            if (openFileDialog1.FileName != "")
            {                                
                // файловый поток для создания файла
                FileStream f = new FileStream(openFileDialog1.FileName, FileMode.Open);
                // объект для двоичной сериализации
                BinaryFormatter bf = new BinaryFormatter();
                // выполнение десериализации объекта                
                DocumentSerialize serialObj = (DocumentSerialize)bf.Deserialize(f);
                // закрытие файлового потока
                f.Close();
                
                comboBox1.SelectedItem = serialObj.database;                
                from.SelectedItem = serialObj.from;                
                for (int i = 0; i < serialObj.select.Length; i++)
                {                    
                    select.SetItemChecked(serialObj.select[i], true);                    
                }                  
            }
        }        

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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