¿Puedes forzar la serialización de un valor de enumeración en un número entero?[duplicar]

StackOverflow https://stackoverflow.com/questions/117348

Pregunta

Posible duplicado:
¿Cómo serializo un valor de enumeración como int?

¡Hola a todos!

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

Para ponerte en contexto:Estamos utilizando, 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 Resultado al encabezado, de modo que tengamos un lugar para pasar sugerencias a la aplicación de llamada sobre cómo fue la operación en el lado del servicio web.Ya tenemos una enumeración declarada a tal efecto, pero como tenemos aplicaciones heredadas que llaman a esos servicios web que tal vez no conozcan esas enumeraciones, me gustaría enviar serializar esos valores como números enteros.

Ya hemos tenido que reducir la longitud de esos encabezados usando [XmlElement(ElementName = "string representOfAttributeName")] porque ocasionalmente excedimos la longitud máxima de la URL de IE, y me preguntaba si hay atributos similares para forzar la serialización de valores de enumeración en números enteros.

¿Alguien ha oído hablar alguna vez de tal atributo?

Como siempre, gracias por la ayuda, Pascal

¿Fue útil?

Solución

Las enumeraciones se serializan en enteros.Pero, en general, si no te gusta la forma en que una de tus propiedades se serializa en XML, puedes 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; }
}

Otros consejos

Las enumeraciones NO se serializan como int de forma predeterminada.Estoy usando XMLSerializer para serializar una clase y tengo el mismo problema 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)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top