.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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д