@evgemiil

Как сделать, чтобы запись добавлялась, а не заменяласт?

код должен добавлять запись в статистику, а он заменяет, вот в гитхабе полный проект https://github.com/evgeniel/XO.git я так понимаю он из за того что data = Serializer.GetData(filePath); стоит после Serializer.SetData(filePath, data); но эта функция GetData возвращает значение, если его поставить первым на нем код останавливается, в общем помогите разобраться
public void SaveStat() //сохранение статистики
        {
            try
            {
                var data = new List<Statistcs>();
                string filePath = "stats.xml";
                

                data.Add(new Statistcs()
                {
                    Date = DateTime.Now,
                    Result = state,
                    StepCounter = stepCounter,
                    UserFirst = true
                });

                Serializer.SetData(filePath, data);
                data = Serializer.GetData(filePath);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

        }
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 3
@JuniorNoobie
Сижу в поддержке, пишу мелкие проекты
Что конкретно делает функция SetData? Если полностью переписывает файл новыми данными, то поставьте строку "data = Serializer.GetData(filePath)" прямо за объявлением пути к файлу. Если же не переписывает, а лишь дописывает, то все должно работать нормально.
Ответ написан
EreminD
@EreminD
Кое-что умею
www.newtonsoft.com/store - стандарт в работе с json и xml. Используйте его для (де)серриализации и не страдайте)
Ответ написан
Комментировать
Android97
@Android97
Программист-Альпинист
Попробуйте так:
public void SaveStat() //сохранение статистики
        {
            try
            {
                var data = new List<Statistcs>();
                string filePath = "stats.xml";
                
 data = Serializer.GetData(filePath);
                data.Add(new Statistcs()
                {
                    Date = DateTime.Now,
                    Result = state,
                    StepCounter = stepCounter,
                    UserFirst = true
                });

                Serializer.SetData(filePath, data);
                data = Serializer.GetData(filePath);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы