2009-06-19 8 views
0

De quelles manières existe-t-il une sérialisation XML unidirectionnelle dans .Net? XmlSerializer n'écrit pas les propriétés qui n'ont pas de paramètre public. Bien que cette limitation soit compréhensible pour la désérialisation, je serais satisfait avec juste la sérialisation pour l'utilisation de Web. La sérialisation JSON.Net fonctionne très bien dans cette situation car elle sérialise le graphe d'objet complet, même si certaines propriétés n'ont pas de setters définis.Ecriture d'un objet au format XML

L'objectif principal de ces classes est une bibliothèque de classes .Net normale. Ces classes sont consommées par un autre code dans 90% des cas, donc je suis à la recherche d'une solution qui ne sacrifie pas la facilité d'utilisation normale des classes.

La bibliothèque de classes qui en résulte doit prendre en charge .Net 2.0.

Répondre

2

Vous pouvez consulter ce site sur: XmlSerializer vs DataContractSerializer

Au-delà, vous pourriez envisager la façon dont votre objet primordial est en cours de sérialisation et de décider par vous-même ce qui devrait et ne devrait pas être dans le flux xml.

+0

Vous pouvez implémenter l'interface ISerializable. – eschneider

3

Je voudrais jeter un oeil à la DataContractSerializer. Alors que ce type est déclaré dans le framework .NET 3.0, cela ne vous empêchera pas d'utiliser la nouvelle version de System.Runtime.Serialization.dll dans votre projet. Pour une bonne compréhension de la façon dont DataContractSerializer diffère de XmlSerializer je voudrais vérifier Chris Lively's answer.

+2

Isnt 'la partie DataContractSerializer de WCF et donc seulement disponible avec .NET 3.0 et supérieur? L'OP a spécifiquement demandé .NET 2.0 ..... –

+0

@marc_s - Vous avez raison, DataContractSerializer fait partie de .NET 3.0 mais puisque les versions 2.0 et 3.x partagent le même CLR (2.0) vous êtes libre d'utiliser 3.x assemblées dans une application 2.0. –

+0

Oui - mais vous devrez toujours installer le framework .NET 3.0, n'est-ce pas? Pas que je pense que ce serait une grosse affaire - mais beaucoup d'administrateurs système font, malheureusement :-( –

Questions connexes