2009-05-13 3 views
0

J'ai récemment utilisé WCF pour utiliser une API REST. J'ai utilisé une classe d'entité pour sérialiser REST XML Reponse, voici la partie que j'ai un problème:Sérialisation de valeurs NULL à partir d'une réponse d'API REST

<grid-cell-size type="decimal" nil="true"/> 

et dans ma classe C#:

[XmlElement("grid-cell-size")] 
public decimal? GridCellSize { get; set; } 

mais le résultat est chaîne d'entrée n'a pas été en format correct. message d'erreur.

Comment puis-je modifier mon code C# pour accepter les valeurs nulles de XML?

+0

J'ai testé [XmlElement ("grid-cell-size"), IsNullable = true] aussi, mais pas de changement! –

+0

Cela fonctionne aussi, mais je ne veux pas ajouter de code supplémentaire! [XmlElement ("grid-cell-size")] protected chaîne ensemble; } privé décimal? _gridCellSize; décimale publique? GridCellSize { \t obtenir \t { \t \t si \t \t { \t \t retour Convert.ToDecimal (GridCellSizeString) (String.IsNullOrEmpty (de GridCellSizeString)!); \t} \t autre \t { \t \t return null; \t} \t} \t set {_gridCellSize = Convert.ToDecimal (valeur); } } –

+0

Oh! J'ai trouvé une question similaire! http://stackoverflow.com/questions/193185/is-it-possible-to-set-a-default-value-when-deserializing-xml-in-c-net-3-5 –

Répondre

0

Essayez d'ajouter le préfixe 'xsi': au lieu de

<grid-cell-size type="decimal" nil="true"/> 

utilisation

<grid-cell-size xsi:type="decimal" xsi:nil="true"/> 

bien sûr - ne pas oublier d'ajouter l'espace de noms au nœud principal: xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns: xsd = "http://www.w3.org/2001/XMLSchema"

déclarations d'espace de noms (si elles n'ont pas déjà été déclarées)

Questions connexes