.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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы