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 ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nun, ich fand meine eigene Beantwortung nach dem Spiel viel herum....es muss in einem alpahbetical um.
also wenn die Klasse hat
dann xml sein sollte definieren, in alphabetischer Reihenfolge.
gut, warum die h... es werden in alphabetischer?
Dass das, was die
Order
Attribut; wenn Sie nicht die Kontrolle haben, auf die Sie XML-Deserialisieren, das ist der einzige workaround kenne ich.In deinem ersten Beispiel wäre