c# - serializar - serialize wikipedia
¿Cómo puedo ignorar una propiedad al serializar usando DataContractSerializer? (5)
Estoy usando .NET 3.5SP1 y DataContractSerializer para serializar una clase. En SP1, cambiaron el comportamiento para que no tenga que incluir atributos DataContract / DataMember en la clase y solo serializará todo. Este es el comportamiento que estoy usando, pero ahora necesito ignorar una propiedad del serializador. Sé que una forma de hacerlo es agregar el atributo DataContract a la clase, y simplemente poner el atributo DataMember en todos los miembros que quiero incluir. Tengo razones, sin embargo, de que esto no funcionará para mí.
Entonces mi pregunta es, ¿hay algún atributo o algo que pueda usar para que el DataContractSerializer ignore una propiedad?
Además, DataContractSerializer serializará los elementos marcados como [Serializable] y también serializará los tipos no marcados en .NET 3.5 SP1 y posteriores, para permitir la compatibilidad con la serialización de tipos anónimos.
Por lo tanto, depende de cómo hayas decorado tu clase sobre cómo evitar que un miembro se serialice:
- Si usó
[DataContract]
, elimine[DataMember]
para la propiedad. - Si usó
[Serializable]
, agregue[NonSerialized]
en frente del campo para la propiedad. - Si no ha decorado su clase, debe agregar
[IgnoreDataMember]
a la propiedad.
En XML Serializing, puede usar el atributo [XmlIgnore] (System.Xml.Serialization.XmlIgnoreAttribute) para ignorar una propiedad al serializar una clase.
Esto puede ser útil para usted (o puede ser útil para cualquiera que haya encontrado esta pregunta cuando intente averiguar cómo ignorar una propiedad al serializar en XML, como yo).
Intente marcar el campo con el atributo [NonSerialized ()]. Esto le dirá al serializador que ignore el campo.
https://msdn.microsoft.com/en-us/library/system.nonserializedattribute(v=vs.110).aspx
Lo que dices está en conflicto con lo que dice en la biblioteca de MSDN en esta ubicación:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx
No veo ninguna mención de la característica SP1 que mencionas.