XmlSerializer avec de nouvelles valeurs enum

Nous utilisons sérialisation /désérialisation largement dans notre projet pour transmettre les données entre plusieurs applications. Nous avons d'un commun xsd de générer des classes c# à partir de là utiliser XmlSerializer pour aller de xml aux objets et à l'arrière.

Le problème que nous allons avoir, c'est quand une application est mise à jour pour ajouter de nouvelles valeurs enum mais l'autre application n'est pas encore été mis à jour. Maintenant, l'application qui n'est pas mis à jour tente de désérialiser le xml et échoue parce qu'il ne sait pas à propos de la nouvelle enum.

Si nous avons app1 et app2, les choses fonctionnent correctement dans le champ, puis app2 est mise à jour avec une nouvelle valeur d'enum dans le xsd et mis à jour pour le client dans le domaine. Soudain, app1 pauses car il ne sait pas à propos de l'enum, app1 pourrait même ne pas l'utiliser enum domaine, n'a pas d'effet sur app1, mais il se casse encore.

Sont-ils connus des façons de contourner cela. Fondamentalement, ce que je veux faire est de définir ce que faire quand un enum n'est pas trouvé, l'utilisation d'une valeur par défaut ou si l'enum comme un nullible type et à la valeur null.

Les deux XmlSerializer et DataContractSerializer lancer des exceptions à cette situation.

J'ai regardé la coutume de la sérialisation xml projet YAXLib (http://www.codeproject.com/KB/XML/yaxlib.aspx) présente également lève une exception, mais il y a le code source et peut être modifié. Ce projet de l'utilisation des différentes propriétés des attributs et aurait besoin d'un peu de changement, mais est probablement faisable.

Toute autre suggestion.

A-t-elle à la sérialisation XML? J'ai eu de la chance de l'aide de james.newtonking.com/projects/json-net.aspx. - Je l'utiliser dans une application de bureau. Ce qui est bien JSON est il ne fait pas porter le type d'info à l'intérieur (ni ne xmlserializer). Cette bibliothèque comporte des rappels et est sérialisé tout ce que j'ai jeté à elle. Il semble que les possibilités d'extension que vous pourriez avoir besoin.

OriginalL'auteur scott | 2009-10-25