オブジェクトのリストを保存する必要があります。オブジェクトは、作成したクラスから作成されます。私は何をすべきか?Windows Phone 7でオブジェクトのリストを保存するXNA
私はXmlSerializerを試しましたが、私はシリアル化する必要があるフィールドに[XmlElement]を追加しました。しかし、それは私に "XML文書に誤りがあります"ということを与え続けました。 私はDataContractSerializerも試してみましたが、私は[DataContract]と[DataMember]を使用しましたが、私のオブジェクトは保存されません。
両方のストレージクラスは、基本要素(int、bool ..など)では動作しますが、私のオブジェクトでは機能しません。
HERESに私の節約のためのコード:
using (IsolatedStorageFile saveGameFile = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream SaveGameStream = new IsolatedStorageFileStream("GemsCollector1.dat", FileMode.OpenOrCreate, saveGameFile))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Card>));
serializer.Serialize(SaveGameStream, Cards);
}
およびロードするため、この1:
using (IsolatedStorageFile saveGameFile = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream saveGameStream = new IsolatedStorageFileStream("GemsCollector1.dat", FileMode.OpenOrCreate, saveGameFile))
{
if (saveGameStream.Length > 0)
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Card>));
Cards = (List<Card>)serializer.Deserialize(saveGameStream);
}
}
私のカードのクラス:
public class Card
{
[XmlElement]
public CardType CardType { get; set; }
[XmlElement]
public CardColor CardColor { get; set; }
[XmlElement]
public int Value { get; set; }
[XmlElement]
public Vector2 Position { get; set; }
[XmlElement]
public PlayerPosition playerPosition { get; set; }
[XmlElement]
public CardStatus Status { get; set; }
public Rectangle BoundingBox
{
get
{
int width = (playerPosition == PlayerPosition.Left || playerPosition == PlayerPosition.Right) ? 150 : 100;
int height = (playerPosition == PlayerPosition.Left || playerPosition == PlayerPosition.Right) ? 100 : 150;
return new Rectangle((int)Position.X, (int)Position.Y, width, height); ;
}
}
[XmlElement]
public bool isUsed;
public Vector2 endPosition = new Vector2(235,200);
public Rectangle ThrowArea = new Rectangle(235, 200, 350, 120);
[XmlElement]
public string cardTextureName;
private string back = "back";
private static bool ReserveDrag;
[XmlElement]
private Vector2 touchFromCenter;
[XmlElement]
private int touchId;
public Card()
{
}
}
は、誰もが、我々はリストを保存する方法を教えてくださいすることができますXNAのユーザー定義オブジェクトの?
電話機のIsolatedStorageに保存しようとしていますか?もしそうなら、おそらくシリアル化コードを投稿するべきです。 –
はい、IsolatedStroageに、私はちょうど私のコードを追加しました – Ateik
そう、エラーは、シリアル化しようとしている "カード"オブジェクトに関連しています。クラスプロパティをシリアライズ可能にしていないと思ってもいいと思います。だからあなたはここでもCardクラスを投稿しなければなりません。 –