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; } }
}
}