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 il ne fera que sérialiser l'ensemble. 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 faire est d'ajouter l'attribut DataContract à la classe, et de mettre simplement l'attribut DataMember sur tous les membres que je veux inclure. J'ai des raisons, cependant, que cela ne fonctionnera pas pour moi.
Ma question est donc la suivante: y a-t-il un attribut ou quelque chose que je peux utiliser pour que DataContractSerializer ignore une propriété?
la source
[IgnoreDataMember]
ne fonctionnerait pas si la classe a un[Serializable]
attribut. Voir les détails dans la réponse de Doug .En outre, DataContractSerializer sérialisera les éléments marqués comme [Serializable] et sérialisera également les types non marqués dans .NET 3.5 SP1 et versions ultérieures, pour 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 et de la façon d'empêcher un membre de sérialiser:
[DataContract]
, supprimez le[DataMember]
pour la propriété.[Serializable]
, ajoutez[NonSerialized]
devant le champ de la propriété.[IgnoreDataMember]
à la propriété.la source
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 cela peut simplement être utile à quiconque a trouvé cette question en essayant de savoir comment ignorer une propriété lors de la sérialisation en XML, comme je l'étais).
la source
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
la source
Ce que vous dites est en conflit avec ce qu'il dit 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.
la source