.NET 4.x При сериализации xml файл заполняется неккоректно - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Пишу небольшую программку для личных нужд. Хранение данных предусматриваю в xml-файле. Сами данные представляют собой класс с атрибутом Serializable. При сериализации в файле происходят какие-то глюки Сам класс:
Листинг программы
  1. [Serializable]
  2. public class Project : INotifyPropertyChanged
  3. {
  4. // Declare the event
  5. public event PropertyChangedEventHandler PropertyChanged;
  6. // Create the OnPropertyChanged method to raise the event
  7. protected void OnPropertyChanged(string name)
  8. {
  9. var handler = PropertyChanged;
  10. handler?.Invoke(this, new PropertyChangedEventArgs(name));
  11. }
  12. // id
  13. [XmlAttribute]
  14. public int Id { get; set; }
  15. // short name
  16. private string _shortName;
  17. [XmlAttribute]
  18. public string ShortName { get { return _shortName; } set { _shortName = value; OnPropertyChanged("ShortName"); } }
  19. // project type
  20. private string _projectType;
  21. [XmlAttribute]
  22. public string ProjectType { get { return _projectType; } set { _projectType = value; OnPropertyChanged("ProjectType"); } }
  23. // project name
  24. private string _projectName;
  25. [XmlAttribute]
  26. public string ProjectName { get { return _projectName; } set { _projectName = value; OnPropertyChanged("ProjectName"); } }
  27. // getting date
  28. private DateTime _gettingDate;
  29. [XmlAttribute]
  30. public DateTime GettingDate { get { return _gettingDate; } set { _gettingDate = value; OnPropertyChanged("GettingDate"); } }
  31. // start date
  32. private DateTime _startDate;
  33. [XmlAttribute]
  34. public DateTime StartDate { get { return _startDate; } set { _startDate = value; OnPropertyChanged("StartDate"); } }
  35. // end date
  36. private DateTime _endDate;
  37. [XmlAttribute]
  38. public DateTime EndDate { get { return _endDate; } set { _endDate = value; OnPropertyChanged("EndDate"); } }
  39. }
При открытии программы происходит десериализация с биндингом на DataGrid
Листинг программы
  1. // on loaded
  2. private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
  3. {
  4. var formatter = new XmlSerializer(typeof(List<Project>));
  5. using (var fs = new FileStream(_xmlFile, FileMode.OpenOrCreate))
  6. {
  7. try
  8. {
  9. _projects = formatter.Deserialize(fs) as List<Project>;
  10. }
  11. catch (Exception)
  12. {
  13. _projects = new List<Project>();
  14. }
  15. }
  16. BindToDataGrid();
  17. }
При работе с DataGrid (изменении данных) и при закрытии программы (окна) происходит сериализация в файл:
Листинг программы
  1. private void SaveToFile()
  2. {
  3. try
  4. {
  5. var formatter = new XmlSerializer(typeof (List<Project>));
  6. using (var fs = new FileStream(_xmlFile, FileMode.OpenOrCreate))
  7. {
  8. formatter.Serialize(fs, _projects);
  9. }
  10. }
  11. catch (Exception exception)
  12. {
  13. MessageBox.Show(exception.Message);
  14. }
  15. }
В общем - все по самым простым примерам. Однако, по неизвестным мне причинам, ибо не происходит исключений, файл записывается некорректно. Реально, с какими-то глюками. Типа так:
Листинг программы
  1. <?xml version="1.0"?>
  2. <ArrayOfProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /> <Project Id="1" ProjectType="ППТ и ПМТ" GettingDate="2016-10-04T11:23:15.6274011+03:00" StartDate="2016-10-04T11:23:15.6274011+03:00" EndDate="2016-10-04T11:23:15.6274011+03:00" />
  3. <Project Id="2" ProjectType="Ремонт" GettingDate="2016-10-04T11:24:04.2767522+03:00" StartDate="2016-10-04T11:24:04.2767522+03:00" EndDate="2016-10-04T11:24:04.2767522+03:00" />
  4. <Project Id="3" GettingDate="2016-10-05T00:00:00" StartDate="2016-10-04T11:24:12.7156322+03:00" EndDate="2016-10-04T11:24:12.7156322+03:00" />
  5. </ArrayOfProject>rrayOfProject>
Пробовал погуглить проблему, но не находил подобных тем

Решение задачи: «.NET 4.x При сериализации xml файл заполняется неккоректно»

textual
Листинг программы
  1. </ArrayOfProject>rrayOfProject>

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


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

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

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы