serialize serializacion deserialize deserializacion data and c# .net wcf serialization datacontractserializer

serializacion - serialize and deserialize c#



DataContractSerializer es un serializador opt-in. ¿Cómo hacer que se excluya? (4)

Heredé algunas clases con una gran cantidad de atributos. Quiero poder serializarlos para WCF .

Como DataContractSerializer es un serializador opt-in, tendré que decorar todas las propiedades con el atributo DataMember , lo que me parece un poco engorroso. ¿No tengo otro camino para no tener que agregar DataMember a todas las propiedades?

Tenga en cuenta que la mayoría de mis propiedades deben ser serializadas.


Así es como fue diseñado como se indica en este enlace de MSDN aquí . Otra alternativa es usar XmlSerializer que serialice todos los campos públicos / propiedades. En última instancia, tendrá que sopesar las ventajas y desventajas al considerar DataContractSerializer frente a otro enfoque.


Simplemente no puede marcar sus clases con ninguno de los atributos de serialización comunes (es decir, [DataContract] / [Serializable] ) y asegúrese de que todas las propiedades que desea serializar sean públicas get y set . Si desea excluir una propiedad determinada, debe marcarla con el atributo [IgnoreDataMember] .

Ejemplo:

public class Hamster { public string Name { get; set; } [IgnoreDataMember] public int Age { get; set; } }

De tipos serializables en MSDN :

Puede aplicar los atributos DataContractAttribute y DataMemberAttribute ... Sin embargo, incluso los tipos que no están marcados con estos atributos se serializan y deserializan. Se aplican las siguientes reglas y excepciones: ...
Todos los campos públicos y las propiedades con los métodos públicos get y set se serializan, a menos que aplique el atributo IgnoreDataMemberAttribute a ese miembro.


Desde dotnet 4.0 y superior,

Puede evitar el atributo [DataContract] para hacer que todos los miembros public sean serializable .