Quiero serializar mi valor enum como un int, pero solo obtengo el nombre.¿Cómo serializo un valor enum como un int?
Aquí es mi clase (muestra) y enumeración:
public class Request {
public RequestType request;
}
public enum RequestType
{
Booking = 1,
Confirmation = 2,
PreBooking = 4,
PreBookingConfirmation = 5,
BookingStatus = 6
}
Y el código (sólo para estar seguro de que no estoy haciendo mal)
Request req = new Request();
req.request = RequestType.Confirmation;
XmlSerializer xml = new XmlSerializer(req.GetType());
StringWriter writer = new StringWriter();
xml.Serialize(writer, req);
textBox1.Text = writer.ToString();
This answer (a otra pregunta) parece indicar que las enumeraciones deben serializarse en ints como predeterminadas, pero no parece hacer eso. Aquí está mi salida:
<?xml version="1.0" encoding="utf-16"?>
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<request>Confirmation</request>
</Request>
he podido serializar como el valor poniendo "[XmlEnum (" X ")]" atributo en cada valor, pero esto sólo parece mal.
Para que quede claro, lo que hace el fragmento es decirle al XmlSerializer: IGNORE la propiedad MyEnum. Y SERIALIZE la Propiedad FooInt32, que simplemente lanza el apuntador MyEnum a un valor Int32. Esto funcionará perfectamente para ti. – Cheeso
Esta es una buena solución al hacer referencia a Enum's desde bibliotecas de terceros. – CtrlDot
También se debe tener en cuenta que la propiedad FooInt32 se serializa como el nombre Foo.Me gusta más esta respuesta porque si tienes docenas de valores en tu enumeración, solo tienes que hacer esto una vez. –