クラスからオブジェクトのリストをシリアル化しようとしていて、ポイント(25,6)のXMLファイルにエラーが発生している数字は私が何をシリアル化しようとしているかによって変わります)。ここでWindows Phone 7の隔離されたストレージのシリアル化エラーがオブジェクトのリスト
は、私は、データをシリアル化しようとしているかの例です:
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { using((IsolatedStorageFileStream fs = isf.CreateFile("data.dat")) { XmlSerializer ser = new XmlSerializer(User.Data.GetType()); ser.Serialize(fs, User.Data);
} }
そして、ここでは、私は、データをデシリアライズしています方法は次のとおりです。
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { if (isf.FileExists("Data.dat")) { using (IsolatedStorageFileStream fs = isf.OpenFile("Data.dat", System.IO.FileMode.Open)) { XmlSerializer ser = new XmlSerializer(User.Data.GetType()); object obj = ser.Deserialize(fs); if (null != obj && obj is Data) User.Data= obj as Data; } } }
私は、コードのこの部分を持つ任意の初期の問題が表示されませんしかし、私はそれを渡すオブジェクトのすべてのリストでクラッシュします。ここで
は、私が使用しているクラスのサンプルです:
public class Data { public static int counter; public Data() { this.index = counter++; } public DateTime availablefrom { get; set; } public DateTime availableuntil { get; set; } public string course { get; set; } public DateTime? datetaken { get; set; } public double duration { get; set; } public string instructions { get; set; } public string instructorname { get; set; } public double scorepointscorrect { get; set; } public double scorepointspossible { get; set; } public string testname { get; set; } public int index { get; private set; } }
私はシリアライザにそれが動作するだけの簡単なクラスを与えるので、私はシリアライザ自体が動作しているけど、私は、オブジェクトのリストを作成するときにするとき私のデータクラスまたは他のクラスから、クラッシュします。誰でも何か提案がありますか?
私は私にプライベートに設定していなかったので、この提案はうまくいくと私は本当に望んでいた。しかし、internalに変更すると同じエラーが発生し、public setに変更しても同じエラーが発生しました。 System.Xml.dllで 'System.InvalidOperationException'型の未処理の例外が発生しました。 追加情報:XML文書(2、2)にエラーがあります。 – legacybass
私は、回避策を見つけるために、シリアライザに私が逆シリアル化しようとしていたものとは異なる情報を伝えていたこのヘルプリクエストを投稿した後、昨夜変更を加えたことに気付きました。 "index"プロパティをinternalに変更した後、完全に機能します。皆さんは素晴らしいです! – legacybass