2012-08-16 3 views
3

Je codais un jeu en C# WPF .NET 4.0 mais je suis en train de le porter sur WinRT pour qu'il devienne une application Metro.C# Metro sérialiser une classe?

Je n'arrive pas à comprendre la sérialisation. Avant de marquer une classe avec [serializable()] et enregistrez-le sur le disque.

Jusqu'à présent, j'ai trouvé DataContracts et xmlserialization, mais comment sérialiser une classe et l'écrire sur le disque?

Dois-je marquer chaque propriété dans la classe avec un attribut, s'il vous plaît aider

Répondre

1

Avec XmlSerializer, ne vous ne pas - en fait, vous n'avez pas besoin de marquer quoi que ce soit dans de nombreux cas. Ajout d'attributs permet cependant beaucoup plus de contrôle sur le XML final, cependant. Avec DataContractSerializer, il est certainement préférable d'ajouter les attributs [DataContract] et [DataMember]; vous n'obtenez pas le même type de contrôle, mais cela fonctionne plutôt bien.

Les caractéristiques des deux sont différentes:

  • DCS ne pas utiliser les constructeurs - XS utilise le constructeur parameterless publique
  • DCS prend en charge les callbacks sérialisation (XS ne fonctionne pas)
  • XS supporte sérialisation conditionnelle (DCS ne)
  • etc

Vous pouvez également envisager protobuf-n et, qui prend récemment en charge WinRT, et a une sortie plus faible et est beaucoup plus rapide que les deux autres (en utilisant le new precompiler); Il supporte à peu près toutes les fonctions et options de DCS et XS combinées, mais avec une sortie binaire rapide multiplate-forme.

+0

Pouvez-vous fournir du code sur la façon de convertir une classe en flux? J'ai des problèmes pour que ça marche? – Windsurfer25

+0

WinRT XAML Toolkit à la rescousse (comme d'habitude) - vérifiez ceci pour un échantillon ou juste obtenez le toolkit et utilisez ceci et d'autres méthodes d'extension qui rendent ces choses simples: http://winrtxamltoolkit.codeplex.com/SourceControl/changeset/view @ Windsurfer25 vous ne "convertissez pas une classe en un flux"/17431 # 309186 –

+0

vous * sérialisez * un objet en écrivant dans un flux. Je peux écrire des exemples de * ça * tout au long de la journée, mais franchement, il s'agit de "regarder l'exemple le plus basique de votre sérialiseur choisi". –

Questions connexes