DataContractSerializer nicht korrekt Deserialisieren, Werte für die Methoden im Objekt fehlen

Meine SomeClass

[Serializable]
[DataContract(Namespace = "")]
public class SomeClass
{
    [DataMember]
    public string FirstName
    { 
        get; set;
    }

    [DataMember]
    public string LastName
    { 
        get; set;
    }

    [DataMember]
    private IDictionary<long, string> customValues;
    public IDictionary<long, string> CustomValues
    {
        get { return customValues; }
        set { customValues = value; }
    }
}

Meine XML-Datei:

<?xml version="1.0" encoding="UTF-8"?>
 <SomeClass>
 <FirstName>John</FirstName>
 <LastName>Smith</LastName>
 <CustomValues>
    <Value1>One</Value1>
    <Value2>Two</Value2>
 </CustomValues >
 </SomeClass>

Aber mein problem ist das Klasse, ich bin nur immer einige die Daten für meine Methoden, wenn ich Deserialisieren.

var xmlRoot = XElement.Load(new StreamReader(
                    filterContext.HttpContext.Request.InputStream,
                    filterContext.HttpContext.Request.ContentEncoding));
XmlDictionaryReader reader = XmlDictionaryReader.CreateDictionaryReader(xmlRoot.CreateReader());
 DataContractSerializer ser = new DataContractSerializer(typeof(SomeClass));
//Deserialize the data and read it from the instance.
SomeClass someClass = (SomeClass)ser.ReadObject(reader, true);

Also, wenn ich überprüfen, "someClass", "FirstName" wird der Wert john, Aber der Nachname wird null sein.

Mysterium ist, wie bekomme ich einige der Daten und nicht alle Daten für die Klasse.
So DataContractSerializer ist nicht nach oben ziehen alle Daten aus xml beim Deserialisieren.

Mache ich etwas falsch.

Jede Hilfe ist willkommen. Vielen Dank im Voraus.

Lassen Sie mich wissen, wenn jemand hat das gleiche problem oder eine Lösung

  • sollte nicht die DataMember-attr auf das öffentliche Eigentum und nicht auf den privaten ?
InformationsquelleAutor | 2009-10-30
Schreibe einen Kommentar