Je suis de sérialisation C# classe suivante au format XMLEmitDefaultValue = false travailler uniquement pour les chaînes
[DataContract]
public class LatLonPoint
{
[DataMember(IsRequired = true, Order = 1)]
public float Lat { get; set; }
[DataMember(IsRequired = true, Order = 2)]
public float Lon { get; set; }
[DataMember(EmitDefaultValue = false, Order = 3)]
public DateTime? OptimalTime { get; set; }
}
Quand je sérialiser cette classe en utilisant le code suivant
public static string GetLatLonPointXml(LatLonPoint data)
{
XmlSerializer xmlSerializer = new XmlSerializer(data.GetType());
using (StringWriter stringWriter = new StringWriter())
{
xmlSerializer.Serialize(stringWriter, data);
return stringWriter.ToString();
}
}
Je reçois le résultat suivant
<?xml version="1.0" encoding="utf-16"?>
<LatLonPoint xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Lat>30</Lat>
<Lon>-97</Lon>
<OptimalTime xsi:nil="true" />
</LatLonPoint>
Pourquoi la sortie OptimalTime est-elle générée lorsque j'ai ajouté la valeur EmitDefaultValue à la valeur D ataMember attribut? J'ai réussi à faire fonctionner EmitDefaultValue avec des chaînes, mais rien d'autre. Merci beaucoup pour votre aide.
Les attributs DataContract et DataMember sont destinés à être utilisés par DataContractSerializer. Je ne crois pas qu'ils sont respectés par le XMlSerializer. – Joe
Merci Joe! C'était le problème. – Navcomp