valor obtener numerico enum clase c# .net xml-serialization attributes

c# - obtener - enum java



¿Puedes forzar la serialización de un valor enum en un número entero? (2)

Los enumerados se serializan a ints. Pero en general, si no le gusta la forma en que una de sus propiedades se serializa en XML, puede hacer esto:

[XmlIgnore] public MyThing MyThing { get; set; } [XmlElement("MyThing")] [EditorBrowsable(EditorBrowsableState.Never), Browsable(false)] public string MyThingForSerialization { get { return //convert MyThing to string; } set { MyThing = //convert string to MyThing; } }

Posible duplicado:
¿Cómo serializo un valor enum como un int?

¡Hola a todos!

Me pregunto si hay una forma de forzar la serialización de un valor enum en su valor entero, en lugar de su representación de cadena.

Para ponerlo en contexto: estamos usando, en una aplicación web que depende en gran medida de servicios web, una única clase base para todos nuestros encabezados de solicitud, independientemente del tipo de solicitud.

Quiero agregar un campo de Resultado al encabezado, por lo que tendremos un lugar para pasar sugerencias a la aplicación llamante sobre cómo fue la operación en el lado del servicio web. Ya tenemos una enumeración en ese sentido, pero dado que tenemos aplicaciones heredadas que llaman a esos servicios web que pueden no conocer esas enumeraciones, me gustaría enviar serializar esos valores como enteros.

Ya hemos tenido que reducir la longitud de esos encabezados utilizando [XmlElement (ElementName = "string representationOfAttributeName"]] porque ocasionalmente superamos la longitud máxima de URL de IE, y me pregunté si habría un atributo similar para forzar la serialización de valores enum en enteros.

¿Alguien ha oído hablar de tal atributo?

Como siempre, gracias por la ayuda, Pascal


Los mensajes no se serializan como int por defecto. Estoy utilizando XMLSerializer para serializar una clase y tengo el mismo problema que el descrito.

(El ejemplo de Matt Howells parece funcionar si cambia el alcance de MyThingForSerialization a público, pero me gustaría ver una mejor implementación porque esto crea 1 propiedad pública adicional)