Ошибка сериализации/десериализации - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите что не так?
        private void button3_Click(object sender, EventArgs e)
        {
            captcha.Instance.DataItems.Add(new CaptchaFormat() { question = textBox2.Text, answer = textBox3.Text });
            captcha.Instance.Save();
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            captcha.LoadData();
            foreach (CaptchaFormat item in captcha.Instance.DataItems)
                richTextBox1.Text+=item.question+"\t"+item.answer+"\n";
        }
При нажатии на одну из кнопок вылетает ошибка на строку с сериализацией класса captcha. Сам класс:
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization.Formatters.Binary;
 
namespace WindowsFormsApplication3
{
    class CaptchaFormat
    {
        public string question { get; set; }
        public string answer { get; set; }
    }
    class captcha
    {
        public readonly static captcha Instance = new captcha();
 
        public static string fileName = "captcha.bin";
        public List<CaptchaFormat> DataItems { get; private set; }
 
        public captcha()
        {
            DataItems = new List<CaptchaFormat>();
        }
        public static void LoadData()
        {
            if (File.Exists(fileName))
            {
                Instance.Load();
            }
        }
 
        public void Load()
        {
            using (var stream = File.OpenRead(fileName))
            using (var zip = new GZipStream(stream, CompressionMode.Decompress))
                DataItems = (List<CaptchaFormat>)new BinaryFormatter().Deserialize(zip);
        }
 
        public void Save()
        {
            using (var stream = File.OpenWrite(fileName))
            using (var zip = new GZipStream(stream, CompressionMode.Compress))
                new BinaryFormatter().Serialize(zip, DataItems);
        }
    }
}
Необработанное исключение типа "System.Runtime.Serialization.SerializationException" в mscorlib.dll Дополнительные сведения: Тип "WindowsFormsApplication3.CaptchaFormat" в сборке "WindowsFormsApplication3, Version=1.0.0.0, Culture=neutral,

Решение задачи: «Ошибка сериализации/десериализации»

textual
Листинг программы
    [Serializable]
    class CaptchaFormat
    {
        public string question { get; set; }
        public string answer { get; set; }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.25 из 5