none
сериализация класса, содерржащего список RRS feed

  • Вопрос

  • Этот класс содержит опции, соответственно, при открытиии закрытии приложения он десериализуется-серилиализуется.

     public class Option
     {
     public List<Filter> listFilters { get; set; }
     public Option()
     {
     this.listFilters = new List<Filter>();
     }
    
     public static void Save(Option Option, string fileName)
     {
     if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "Settings"))
     {
     Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "Settings");
     }
     XmlSerializer mySerializer = new XmlSerializer(typeof(Option));
     StreamWriter myWriter = new StreamWriter(fileName);
     mySerializer.Serialize(myWriter, Option);
     myWriter.Close();
     }
    
    
     public static Option Load(string fileName)
     {
     XmlSerializer mySerializer = new XmlSerializer(typeof(Option));
     if (File.Exists(fileName))
     {
     FileStream myFileStream = new FileStream(fileName, FileMode.Open);
     Option pos = (Option)mySerializer.Deserialize(myFileStream);
     myFileStream.Close();
     return pos;
     }
     return new Option();
    
     }
     }
    
    

    Класс-элемент списка

     public class Filter
     {
       public int Filter;
       public int Count;
     }
    
    

     

    Но вот проблема, все это барахло перестает работать, если в класс добавить список listFilters

    2 ноября 2010 г. 17:05

Ответы

  • Это барахло не компилируется с ошибкой

     

    'Filter': member names cannot be the same as their enclosing type. 

    А раз не компилируется - то и не работает.

     

    • Помечено в качестве ответа Abolmasov Dmitry 10 ноября 2010 г. 10:08
    2 ноября 2010 г. 19:30
    Модератор
  •  public class Filter
     {
      public int Filter; <--- имя члена класса не может совпадать с именем класса
      public int Count;
     }

    Если исправить на другое имя, то код который Вы привели работает нормально.

    Для связи [mail]
    • Помечено в качестве ответа Abolmasov Dmitry 10 ноября 2010 г. 10:08
    3 ноября 2010 г. 20:13

Все ответы

  • Это барахло не компилируется с ошибкой

     

    'Filter': member names cannot be the same as their enclosing type. 

    А раз не компилируется - то и не работает.

     

    • Помечено в качестве ответа Abolmasov Dmitry 10 ноября 2010 г. 10:08
    2 ноября 2010 г. 19:30
    Модератор
  •  public class Filter
     {
      public int Filter; <--- имя члена класса не может совпадать с именем класса
      public int Count;
     }

    Если исправить на другое имя, то код который Вы привели работает нормально.

    Для связи [mail]
    • Помечено в качестве ответа Abolmasov Dmitry 10 ноября 2010 г. 10:08
    3 ноября 2010 г. 20:13