Przekazanie do serializacji biężacego obiektu

0

Witam, otoż chciałem sobie trochę zmodyfikowac stary kod i napotkałem problem, gdy probuję przekazać do serializacji biężący obiekt .

 
        public void Save(string path)
        {
            #region Przed serializacja
            /*using (writer = new StreamWriter(path)){
            writer.WriteLine(this.Description);
            writer.WriteLine(this.Result);
            writer.WriteLine(this.LastUsed);
            }*/
            #endregion
 
            using (writer = File.OpenWrite(path))
            {
                BinaryFormatter output = new BinaryFormatter();
                output.Serialize(writer, this);
            }
        }

To wywala mi error " 'System.Runtime.Serialization.SerializationException' occurred in mscorlib.dll" , a gdy np przekazuję pole bieżącej instancji do serializacji, to wszystko śmiga .

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace Klopoty_w_pracy_str_463
{
    [Serializable]
    class Excuse
    {
        private string excusePath;
        StreamReader reader;
        Stream writer;
        public Excuse(string folder,Random random)
        {
            string[] filesName = Directory.GetFiles(folder);
            OpenFile(filesName[random.Next(filesName.Length)]);
        }
        public Excuse(string path)
        {
            OpenFile(path);
        }
        public Excuse()
        {
            excusePath = "";
        }
        public void OpenFile(string excusePath)
        {
            this.ExcusePath = excusePath;
            using (reader = new StreamReader(excusePath))
            {
                Description = reader.ReadLine();
                Result = reader.ReadLine();
                LastUsed = Convert.ToDateTime(reader.ReadLine());
                DateOfFile = File.GetCreationTime(excusePath).ToString();
            }

            
        }
        public void Save(string path)
        {
            #region Przed serializacja
            /*using (writer = new StreamWriter(path)){
            writer.WriteLine(this.Description);
            writer.WriteLine(this.Result);
            writer.WriteLine(this.LastUsed);
            }*/
            #endregion
           
            using (writer = File.OpenWrite(path))
            {
                BinaryFormatter output = new BinaryFormatter();
                output.Serialize(writer, this);
            }
        }
      
        public string Description { get; set; }
        public string Result { get; set; }
        public DateTime LastUsed { get; set; }
        public string DateOfFile { get; set; }
        public string ExcusePath { get { return excusePath; } set { excusePath = value; } }
    }
}

 
1

wrzuć to proszę w:

 
try{
    ...
} catch(Exception e) {
    ...
}

i przyglądnij się exception który poleci. Prawdopodobnie będzie tam więcej informacji o tym co jest nie tak.

Druga rzecz to nie wiem czy ci nie przeszkadza to że "dto" ma też obowiązek serializacji. Rozbił bym to na dwie klasy i spróbował ponownie.

0

Już wszystko działa. Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1