.NET 4.x Непредвиденный вызов метода List.Add - C#
Формулировка задачи:
Доброго времени суток уважаемые!
Есть вот такая программа (код ниже, исходник прилагается):
"Особенность" её в том, что стандартный класс
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
public class MyList<T> : List<T>
{
new public virtual void Add(T item)
{
Console.WriteLine("Adding item!");
base.Add(item);
Config.Save();
}
}
public class Params
{
[XmlAttribute]
public string title;
}
public class ConfigData
{
public MyList<Params> MyParams;
public ConfigData()
{
MyParams = new MyList<Params>();
}
}
public static class Config
{
private static ConfigData Data = new ConfigData();
public static MyList<Params> MyParams
{
get
{
Config.Load();
return Data.MyParams;
}
private set { Data.MyParams = value; }
}
public static void Save()
{
XmlSerializer xs = new XmlSerializer(typeof(ConfigData));
using (StreamWriter s = new StreamWriter("config.xml"))
{
xs.Serialize(s, Data);
}
}
public static void Load()
{
XmlSerializer xs = new XmlSerializer(typeof(ConfigData));
using (StreamReader s = new StreamReader("config.xml"))
{
Data = (ConfigData)xs.Deserialize(s);
}
}
}
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Config.MyParams.Count);
Console.ReadKey();
}
}
}List
был немного расширен... При добавлении элемента кList
'у - он добавляется и сохраняется в файл, при обращении кConfig.MyParams
- файл конфигурации снова загружается...Вопрос:
Почему, при обращении кConfig.MyParams
срабатывает методSave()
, который нигде явно не вызывается и как этого избежать? Проблема в том, что из-за одновременной попытки чтения и записи файла конфигурации, возникает ошибка. P.S. Возможно, есть какие-то более "надёжные" способы хранения конфигов, кроме сериализации? Спасибо!Решение задачи: «.NET 4.x Непредвиденный вызов метода List.Add»
textual
Листинг программы
Console.WriteLine(Config.MyParams.Count);