public class StorageOfData
{
public static StorageOfData instance;
private StorageOfData()
{ }
public static StorageOfData getInstance()
{
if (instance == null)
instance = new StorageOfData();
return instance;
}
private List<List<VersionOfFile>> list = new List<List<VersionOfFile>>();
public List<VersionOfFile> this[int index]
{
get
{
return list[index];
}
}
public void RestoreDataFromFile(String path)
{
StorageOfData DATA;
XmlSerializer mySerializer = new XmlSerializer(typeof(StorageOfData));
FileStream myFileStream = new FileStream(path + @"BAK\" + "history.xml", FileMode.Open);
DATA = (StorageOfData)mySerializer.Deserialize(myFileStream);
}
public void SaveDataToFile(String path)
{
StorageOfData DATA = StorageOfData.getInstance();
XmlSerializer mySerializer = new XmlSerializer(typeof(StorageOfData));
StreamWriter myWriter = new StreamWriter(path + @"BAK\" + "history.xml");
mySerializer.Serialize(myWriter, DATA);
myWriter.Close();
}
public void AddNewEntryIfRenamed(string filename, string real_filename, DateTime date, bool isDeleted)
{
for (int i = 0; i < list.Count; i++)
{
if (list[i][list[i].Count - 1].Filename == filename)
{
list[i].Add(new VersionOfFile(filename, real_filename, date, isDeleted));
return;
}
}
list.Add(new List<VersionOfFile>());
list[list.Count - 1].Add(new VersionOfFile(filename, real_filename, date, isDeleted));
}
public void AddNewEntryIfCopyExists(string filename, string real_filename, DateTime date, bool isDeleted)
{
for (int i = 0; i < list.Count; i++)
{
if (list[i][list[i].Count - 1].Filename == filename)
{
list[i].Add(new VersionOfFile(filename, real_filename, date, isDeleted));
return;
}
}
list.Add(new List<VersionOfFile>());
list[list.Count - 1].Add(new VersionOfFile(filename, real_filename, date, isDeleted));
}
public void AddNewEntry(string filename, DateTime date, bool isDeleted)
{
for (int i = 0; i < list.Count; i++)
{
if (list[i][list[i].Count - 1].Filename == filename)
{
list[i].Add(new VersionOfFile(filename, date, isDeleted));
return;
}
}
list.Add(new List<VersionOfFile>());
list[list.Count - 1].Add(new VersionOfFile(filename, date, isDeleted));
}
}
internal struct VersionOfFile
{
private string filename;
private string real_filename;
private DateTime date;
private bool isDeleted;
public string Filename
{
get
{
return filename;
}
}
public string Real_filename
{
get
{
return real_filename;
}
}
public DateTime Date
{
get
{
return date;
}
}
public bool IsDeleted
{
get
{
return isDeleted;
}
}
public VersionOfFile(string filename, string real_filename, DateTime date, bool isDeleted)
{
this.filename = filename;
this.real_filename = real_filename;
this.date = date;
this.isDeleted = isDeleted;
}
public VersionOfFile(string filename, DateTime date, bool isDeleted)
{
this.filename = filename;
this.date = date;
this.isDeleted = isDeleted;
this.real_filename = String.Empty;
}
I'm writing a simple program for backuping my files, but I run into a problem. I should log any changes, but when I try to serialize my singletone-storage of information about changes, I get just an empty .xml file. What should I do to seriallise dynamaic arrays (List<>) ??