Como parte de intentar aprender WCF, estoy leyendo sobre la serialización. Me cuesta entender cómo puedo controlar la serialización en .NET 3.5. Por ejemplo, tengo una clase simple con algunas propiedades públicas. Al agregar el atributo DataContract a esa clase, puedo, por ejemplo, controlar el espacio de nombre y el nombre de la clase a medida que se serializa.DataContract frente a XmlType
Por otro lado, podría agregar el atributo Serializable (probablemente ni siquiera sea necesario) y un atributo XmlType, que también me permite controlar el espacio de nombres y el nombre que se utiliza para serializar la clase.
Implementé ambos enfoques y uso la clase en un ServiceContract como parte de una llamada de interfaz. Luego utilizo un analizador Http para ver cómo se estratifican los diversos objetos y noté que el XmlType no influía en absoluto en el xml del http.
He estado tratando de entender esto todo el día. ¿Qué me estoy perdiendo?
Actualización: Entiendo la diferencia entre los dos y por qué están allí. Simplemente no entiendo por qué no puedo influir en el xml generado con XmlType o (lo intenté con XmlRoot).
Básicamente, puede controlar todos los detalles de la serialización implementando IXmlSerializable, excepto los espacios de nombres y el nombre del elemento de nivel superior. Para eso, estaba asumiendo que necesitaría el atributo XmlType o XmlRoot. ¿Estaba equivocado?
XmlRoot, XmlType y IXmlSerializable están todos relacionados con el serializador XML y no tienen ningún efecto en la serialización de los contratos de datos. –
Ver [datacontractserializer-vs-xmlserializer-pros-and-cons?] (Http://stackoverflow.com/questions/2505778/datacontractserializer-vs-xmlserializer-pros-and-cons-of-each-serializer?) – nawfal