Question

i besoin d'enregistrer une liste d'objets, les objets sont créés à partir d'une classe i fait. Que dois-je faire?

i essayé XmlSerializer, et j'ajouté le [XmlElement] aux champs que je dois être sérialisé. mais il a continué à me donner « Il y a une erreur dans le document XML ». J'ai essayé aussi DataContractSerializer, et je l'ai utilisé le [DataContract] et [DataMember] mais il ne sera pas enregistrer mes objets.

les deux classes de stockage travaillent pour les éléments de base (int, bool .. etc) mais pas mes objets.

Heres mon code pour l'enregistrement:

        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);
        }

et celui-ci pour le chargement:

        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);
            }

        }

ma classe Carte:

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()
    {
    }
}

Quelqu'un peut-il s'il vous plaît me dire comment nous sauver Liste des objets définis par l'utilisateur dans XNA?

Était-ce utile?

La solution

You're attempting to serialize private properties. That's not supported on Windows Phone 7. Which could easily be cause for the error.

Also, you have to ensure that all of the types you used for properties, is also serializeable, and that all types have a empty constructor.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top