J'utilise .NET 3.5SP1 et DataContractSerializer pour sérialiser une classe. Dans SP1, ils ont changé le comportement afin que vous n'ayez pas à inclure les attributs DataContract/DataMember sur la classe et que le tout sera sérialisé. C'est le comportement que j'utilise, mais je dois maintenant ignorer une propriété du sérialiseur. Je sais qu’une façon de procéder consiste à ajouter l’attribut DataContract à la classe et à placer l’attribut DataMember sur tous les membres que je souhaite inclure. J'ai des raisons, cependant, que cela ne fonctionnera pas pour moi.
Ma question est donc la suivante: existe-t-il un attribut ou quelque chose que je peux utiliser pour que DataContractSerializer ignore une propriété?
De plus, DataContractSerializer sérialisera les éléments marqués comme [Serializable], ainsi que les types non marqués dans .NET 3.5 SP1 et versions ultérieures, afin de permettre la prise en charge de la sérialisation des types anonymes.
Donc, cela dépend de la façon dont vous avez décoré votre classe pour empêcher un membre de la sérialisation:
[DataContract]
, puis retirez le [DataMember]
pour la propriété.[Serializable]
, puis ajouter [NonSerialized]
devant le champ pour la propriété.[IgnoreDataMember]
à la propriété.Dans la sérialisation XML, vous pouvez utiliser l'attribut [XmlIgnore] (System.Xml.Serialization.XmlIgnoreAttribute) pour ignorer une propriété lors de la sérialisation d'une classe.
Cela peut vous être utile (ou peut être utile à tous ceux qui ont trouvé cette question lorsqu’ils tentaient de savoir comment ignorer une propriété lors de la sérialisation en XML, comme j’étais).
Essayez de marquer le champ avec l'attribut [NonSerialized ()]. Cela indiquera au sérialiseur d'ignorer le champ.
https://msdn.Microsoft.com/en-us/library/system.nonserializedattribute (v = vs.110) .aspx
Ce que vous dites est en conflit avec ce qui est écrit dans la bibliothèque MSDN à cet emplacement:
http://msdn.Microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx
Je ne vois aucune mention de la fonctionnalité SP1 que vous mentionnez.