2009-08-11 4 views
2

J'ai une application WCF RESTful qui utilise des classes personnalisées comme paramètres de méthode de service. Ces classes sont décorées avec l'attribut [DataContract] et chacune de leurs propriétés est décorée avec l'attribut [DataMember]. Le désérialiseur fonctionne avec la page "Data Member Order" de MSDN suivante: http://msdn.microsoft.com/en-us/library/ms729813.aspx. En d'autres termes, il s'attend à ce que les éléments des données d'entrée au format XML suivent l'ordre ainsi décrit. En fait, si l'un des éléments est en désordre, après la désérialisation, il n'a pas la valeur soumise mais est plutôt nul.Commande de membre de données et désérialisation XML

Y a-t-il une bonne façon de permettre au programme appelant de commander les éléments xml librement (c'est-à-dire, dans n'importe quel ordre) et de désérialiser chaque élément des éléments?

+0

Je me rends compte que cette question est plutôt ancienne, mais voici une question similaire sur le même thème - http://stackoverflow.com/questions/1727682/wcf-disable-deserialization-order-sensitivity – Reddog

+0

Copie possible de [WCF Datacontract, certains champs ne pas désérialiser] (https://stackoverflow.com/questions/2519240/wcf-datacontract-some-fields-do-not-deserialize) – Vlad

Répondre

2

La plupart des fichiers XML n'autorisent pas la saisie d'éléments dans un ordre arbitraire. Il n'y a pas de bonne raison de permettre cela, autant que je sache.

Le sérialiseur de contrat de données ne le supporte pas du tout. Cela ajouterait des frais généraux et ne fournirait aucune valeur. Pourquoi vos interlocuteurs ne peuvent-ils pas simplement envoyer le bon code XML?

+0

John, merci pour votre réponse. Vous avez dit "le Serializer de contrat de données ne supporte pas du tout cela." Pouvez-vous me diriger vers la documentation de Microsoft qui le dit directement, ou l'avez-vous rassemblée à partir de diverses sources? –

+0

@Ralph: vous l'avez dit vous-même: "il s'attend à ce que les éléments dans les données d'entrée au format XML suivent l'ordre ainsi décrit". En outre, les diverses publications au fil des ans sur les différences entre la sérialisation des contrats de données et la sérialisation XML ont clairement montré que la sérialisation des contrats de données devait être rapide et simple. Les choix ne sont pas "simples" et ils n'ajoutent aucune valeur. –

+0

@Ralph: S'il vous plaît mettre à jour votre question pour dire pourquoi vous voulez faire cela. Pourquoi vos interlocuteurs ne peuvent-ils pas envoyer le bon code XML? –

Questions connexes