2009-05-13 5 views
0

Ich habe WCF kürzlich verwendet, um eine REST-API zu verwenden. Ich benutzte eine Entität Klasse REST XML Reponse serialisiert werden, hier ist der Teil habe ich ein Problem:Serialisieren von Nullwerten aus einer REST-API-Antwort

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

und in meinem C# Klasse:

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

aber das Ergebnis ist Eingabezeichenfolge war nicht in ein korrektes Format Fehlermeldung.

Wie kann ich meinen C# -Code ändern, um Nullwerte aus XML zu akzeptieren?

+0

Ich habe auch [XmlElement ("grid-cell-size"), IsNullable = true] getestet, aber keine Änderung! –

+0

Das funktioniert auch, aber ich möchte keinen zusätzlichen Code hinzufügen! [XmlElement ("grid-cell-size")] geschützter String GridCellSizeString {get; einstellen; } private dezimal? _gridCellSize; öffentliche Dezimalzahl? GridCellSize { \t bekommen \t { \t \t wenn \t \t { \t \t Rückkehr Convert.ToDecimal (GridCellSizeString) (String.IsNullOrEmpty (GridCellSizeString)!); \t} \t sonst \t { \t \t return null; } \t} \t set {_gridCellSize = Convert.ToDecimal (Wert); } } –

+0

Oh! Ich habe eine ähnliche Frage gefunden! http://stackoverflow.com/questions/193185/is-it-possible-to-set-a-default-value-when-deserializing-xml-in-c-net-3-5 –

Antwort

0

Versuchen Sie, die 'xsi' Präfix hinzufügen: statt

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

Verwendung

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

natürlich - vergessen Sie nicht den Namespace zu dem Hauptknoten hinzuzufügen: xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns: xsd = "http://www.w3.org/2001/XMLSchema"

Namespace-Deklarationen (falls nicht bereits erklärt)

Verwandte Themen