WP7 XNA InvalidOperationException podczas deserializacji

WP7 XNA InvalidOperationException podczas deserializacji
GA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 32
0

Siema.
Kiedy chce zdeserializować listę wyrzuca mi wyjątek InvalidOperationException o treści There is an error in XML document (3, 4). Dlaczego tak się dzieje?

Odczyt:

Kopiuj
public static void loadHighscores()
        {
            using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if(isf.FileExists("hs.xml"))
                {
                    using (IsolatedStorageFileStream fs = isf.OpenFile("hs.xml", FileMode.Open))
                    {
                        XmlSerializer serializer = new XmlSerializer(typeof(HighscoreList));
                        highscores = serializer.Deserialize(fs) as HighscoreList;
                    }
                }
            }
        }

Zapis:

Kopiuj
public static void saveHighscores()
        {
            using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if(isf.FileExists("hs.xml"))
                {
                    isf.DeleteFile("hs.xml");
                }
                using (IsolatedStorageFileStream fs = isf.CreateFile("hs.xml"))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(HighscoreList));
                    serializer.Serialize(fs, highscores);
                }
            } 
        } 

Klasy:

Kopiuj
[XmlRoot("highscore_list")]
    public class HighscoreList
    {
        public HighscoreList()
        {
            items = new List<Score>();
        }
        [XmlElement("items")]
        public List<Score> items { get; set; }
    }

public class Score
    {
        [XmlElement("name")]
        public string name { get; set; }
        [XmlElement("score")]
        public double score { get; set; }
        public Score(string name, double score)
        {
            this.name = name;
            this.score = score;
        }
    } 
szogun1987
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Lublin/Gdynia
2

O ile dobrze pamiętam Deserializacja wymaga domyślnego konstruktora ( ewentualnie konstruktora przyjmującego StreamingContext). Klasa Score nie posiada takowego.

GA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 32
0

Dzięki, teraz wszystko śmiga

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.