.net datacontractserializer

.net - Ignorar orden de campo en DataContractSerializer



(1)

Al deserializar, DataContractSerializer requiere no solo que el nombre de un elemento coincida, sino también que esté en un cierto orden con respecto a los otros elementos.

Mi aplicación es tal que cada campo puede ser identificado de forma única por su nombre. Por lo tanto, me gustaría que el archivo XML contenga los elementos en cualquier orden y que el deserializador aún funcione.

¿Es posible configurar un DataContract como este?

El párrafo introductorio en Orden de Miembro de Datos sugiere que el orden se impone opcionalmente , pero no he encontrado una manera de hacerlo en realidad opcional.

Pregunta de seguimiento : control de versiones de archivos de datos simple con DataContractSerializer


No, no es opcional. Es opcional especificar explícitamente un orden, pero de lo contrario, el orden está determinado por las reglas básicas a las que se vinculó (tipos de base primero, alfabético, ...).

El párrafo introductorio simplemente implica que no siempre necesita saber o preocuparse por el pedido, por ejemplo, si está utilizando un proxy generado.

Si está utilizando DataContractSerializer para deserializar un archivo, la mejor solución que se me ocurra sería usar XSLT para transformarlo en el orden correcto antes de deserializar.

Si está llamando a un servicio web (para lo que fue diseñado DataContractSerializer), es mejor que cumpla con el pedido del contrato.