cs_bunch
Messages postés2Date d'inscriptionmercredi 5 octobre 2005StatutMembreDernière intervention18 novembre 2010
-
16 mars 2010 à 15:55
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
20 mars 2010 à 17:07
Bonjour,
la question est simple, lors de la sérialisation d'un objet, est-il possible d'inclure une propriété dans le fichier xml mais d'ignorer cette propriété lors de sa désérialisation.
deserialisation
- initilisation de la valeur de prop1 seulement, pas de tentative d'initialisation de prop2
Les propriétés en questions sont des champs calculés que je veux pouvoir sauvegarder pour analyse des données plus tard mais que je ne veux pas réintégrer dans l'appli lors de l'inportation de mon fichier.
info : je ne veux pas mettre de setter vide sur prop2
merci pour vos réponses
Bunch
PS : je ne savais pas trop comment classer le sujet, je suis désolé si je ne l'ai pas mis dans la bonne catégorie.
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 20 mars 2010 à 17:07
Bonjour,
En fait là le truc est que le sérialiseur XML ne va pas persister la valeur retournée par Prop2 car elle est en lecture seule.
Je ne suis pas certains d'avoir tout compris à la question, mais pour faire cela je ne vois pas d'autre solution que la personnalisation de la sérialisation/desérialisation.
Petit exemple rapide (à stabiliser) :
[Serializable]
public class Classe1 : IXmlSerializable
{
public Classe1()
{
}
private string prop1;
private string prop3;
public string Prop1
{
get { return prop1; }
set { prop1 = value; }
}
public string Prop2
{
get { return prop1 + "..."; }
}
public string Prop3
{
get { return this.prop3; }
set { this.prop3 = value; }
}
public XmlSchema GetSchema()
{
return null;
}
public void ReadXml(XmlReader reader)
{
reader.ReadToDescendant("Prop1");
this.Prop1 = reader.ReadElementContentAsString();
reader.ReadToNextSibling("Prop3");
this.Prop3 = reader.ReadElementContentAsString();
}
public void WriteXml(XmlWriter writer)
{
writer.WriteElementString("Prop1", this.Prop1);
writer.WriteElementString("Prop2", this.Prop2);
writer.WriteElementString("Prop3", this.Prop3);
}
}