Dans le cadre de la tentative d'apprentissage WCF, je suis en train de lire sur la sérialisation. J'ai du mal à comprendre comment je peux contrôler la sérialisation dans .NET 3.5. Par exemple, j'ai une classe simple avec quelques propriétés publiques. En ajoutant l'attribut DataContract à cette classe, je peux par exemple contrôler l'espace de noms et le nom de la classe telle qu'elle est sérialisée. D'autre part, je pourrais ajouter l'attribut Serializable (probablement même pas nécessaire) et un attribut XmlType, ce qui me permet également de contrôler l'espace de noms et le nom utilisé pour sérialiser la classe.DataContract vs XmlType
J'ai implémenté les deux approches et utilisé la classe dans un contrat de service dans le cadre d'un appel d'interface. J'utilise ensuite un analyseur Http pour voir comment les différents objets sont sérizalized et j'ai remarqué que le XmlType n'a pas influencé le xml dans le http du tout.
J'ai essayé de comprendre cela toute la journée. Qu'est-ce que je rate?
Mise à jour: Je comprends la différence entre les deux et pourquoi ils sont là. Je ne comprends tout simplement pas pourquoi je ne peux pas influencer le fichier XML généré avec XmlType ou (juste essayé XmlRoot).
Fondamentalement, vous pouvez contrôler tous les détails de la sérialisation en implémentant IXmlSerializable, à l'exception des espaces de noms et du nom de l'élément de premier niveau. Pour cela, je supposais que vous auriez besoin de l'attribut XmlType ou XmlRoot. Avais-je tort?
XmlRoot, XmlType et IXmlSerializable sont tous liés au XML Serializer et n'ont aucun effet sur la sérialisation du contrat de données. –
Voir [datacontractserializer-vs-xmlserializer-avantages-et-inconvénients?] (Http://stackoverflow.com/questions/2505778/datacontractserializer-vs-xmlserializer-pros-and-cons-of-each-serializer?) – nawfal