Estoy usando .NET 3.5SP1 y DataContractSerializer para serializar una clase. En SP1, cambiaron el comportamiento para que no tenga que incluir los 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 hacer esto es agregar el atributo DataContract a la clase y simplemente colocar el atributo DataMember en todos los miembros que quiero incluir. Sin embargo, tengo razones para que esto no funcione para mí.
Entonces mi pregunta es, ¿hay algún atributo o algo que pueda usar para hacer que DataContractSerializer ignore una propiedad?
c#
.net
wcf
serialization
NotDan
fuente
fuente
[IgnoreDataMember]
no funcionaría si la clase tiene[Serializable]
atributo. Ver detalles en la respuesta de Doug .Además, DataContractSerializer serializará elementos marcados como [Serializable] y también serializará tipos no marcados en .NET 3.5 SP1 y posterior, para permitir el soporte para serializar tipos anónimos.
Entonces, depende de cómo hayas decorado tu clase en cuanto a cómo evitar que un miembro serialice:
[DataContract]
, elimine el[DataMember]
de la propiedad.[Serializable]
, agregue[NonSerialized]
delante del campo para la propiedad.[IgnoreDataMember]
a la propiedad.fuente
En la serialización XML, puede usar el atributo [XmlIgnore] (System.Xml.Serialization.XmlIgnoreAttribute) para ignorar una propiedad al serializar una clase.
Esto puede ser útil para usted (o simplemente puede ser útil para cualquiera que haya encontrado esta pregunta al intentar descubrir cómo ignorar una propiedad al serializar en XML, como lo hice yo).
fuente
Intente marcar el campo con el atributo [No serializado ()]. Esto le indicará al serializador que ignore el campo.
https://msdn.microsoft.com/en-us/library/system.nonserializedattribute(v=vs.110).aspx
fuente
Lo que está diciendo 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 función SP1 que mencionas.
fuente