Me gustaría conocer los escenarios más comunes donde la serialización xml puede fallar en .NET.Escenarios donde la serialización Xml falla en .NET
Respuesta
Estoy pensando sobre todo de XmlSerializer
aquí:
- se limita a los datos en forma de árbol; que no puede manejar gráficos de objetos completos
- se limita a miembros del público, en las clases públicas
- en realidad no puede hacer mucho con
object
miembros - tiene algunos puntos débiles alrededor de los genéricos
- como muchos serializadores, no tocará las propiedades de instancia de una colección (mala práctica en el primer lugar)
- xml simplemente no es siempre una buena opción para grandes volúmenes de datos (no menos importante, para un rendimiento)
- requiere un constructor sin parámetros pública
DataContractSerializer
resuelve algunos de estos, pero tiene sus propias limitaciones:
- que no puede manejar valores de atributos
- requiere .NET 3.0 (así no hay mucho uso en 2,0)
El tema miembros del público se puede evitar mediante el uso de DataContractSerializer –
cierto - aclarará ... –
Estos son todos Es bueno saber sobre el marco de serialización Xml en .NET, pero no diría que son escenarios comunes en los que la serialización XML "falla". Por ejemplo, que el serializador Xml serializa solo los miembros públicos de lectura/escritura es un atributo del marco de serialización, no un escenario donde falla. Que requiere que la clase tenga un ctor público sin parámetros tampoco es un "fracaso" per se. – Cheeso
TimeSpan
objetos no son serializables. IDictionary
-los tipos de implementación tampoco son serializables (aunque pueden pueden ser serializados con algún masaje manual).
Dependiendo del serializador, las referencias cíclicas pueden no funcionar
AFAIK, las clases marcadas como [Obsoletas] no están serializadas por XmlSerializer desde .NET 2.0
No se pueden serializar fácilmente colecciones genéricas.
ver otra pregunta: C# XML Serialization Gotchas
El uso de la palabra clave sombras también ha roto la serialización y deserialización para mí porque el sombreado provoca una nueva aplicación de esa propiedad de existir por lo que es incompatible para la reconstrucción adecuada. Solo use sobrecargas si desea volver a escribir el específico para una subclase.
Para aquellos que no conocen VB.NET, "' Shadows' "es equivalente a' new' en C#: 'public new int PropertyName {get; set;}' donde la clase base tiene un 'public virtual int PropertyName. ..'. –
- 1. NET serialización XML y la herencia
- 2. .Net Serialización XML basada en un XSD?
- 3. TryCast falla donde funciona DirectCast (.NET 4.0)
- 4. ¿Cuándo debo usar la serialización XML frente a la serialización binaria en .NET Framework?
- 5. atributos obligatorios en la serialización XML
- 6. NET serialización XML sin declaración <?xml> texto
- 7. Corregir serialización XML y deserialización de tipos "mixtos" en .NET
- 8. Serialización XML en C#
- 9. Xml Serialización en C#
- 10. serialización XML de enumeraciones
- 11. serialización XML de la lista
- 12. Enum serialización JSON vs XML
- 13. ¿Cómo controlo la parte <?xml ?> de la serialización xml con .NET?
- 14. ¿Cómo insertar comentarios XML en Serialización XML?
- 15. Cómo utilizar la serialización XML predeterminada desde los métodos de serialización XML personalizados
- 16. Xml Serialización sin eliminación
- 17. Reemplazo para Serialización XML
- 18. Inmutabilidad y serialización XML
- 19. serialización XML y codificación
- 20. serialización XML, codificación
- 21. xml condicional serialización
- 22. Cómo funciona la serialización en .Net
- 23. Xml Serialización de ReadOnlyCollections
- 24. serialización de Scala XML
- 25. XML Deserialización falla en elemento vacío
- 26. Serialización y ofuscación en .NET
- 27. Uso de StringWriter para la serialización XML
- 28. alterar el resultado de la serialización xml
- 29. Cómo personalizar la serialización XML de WCF
- 30. serialización XML de DataContract y atributos XML
Posiblemente un duplicado de http://stackoverflow.com/questions/67959/net-xml-serialization-gotchas – dthrasher