¿Cómo serializar / deserializar la enumeración XML opcional en C #?
Estoy tratando de averiguar cómo serializar / deserializar una lista XML a C # que tiene un atributo opcional que es un tipo enumerado. La siguiente es mi clase de C #:
public class AttributeAssignmentExpressionElement : XACMLElement
{
[XmlAttribute]
public string AttributeId { get; set; }
[XmlAttribute]
public Category Category { get; set; }
}
MiCategory
La enumeración se define de la siguiente manera:
public enum Category
{
[XmlEnum(Name = "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject")]
Subject,
[XmlEnum(Name = "urn:oasis:names:tc:xacml:3.0:attribute-category:resource")]
Resource,
[XmlEnum(Name = "urn:oasis:names:tc:xacml:3.0:attribute-category:action")]
Action,
[XmlEnum(Name = "urn:oasis:names:tc:xacml:3.0:attribute-category:environment")]
Environment
}
CuandoCategory
está presente en el archivo XML correspondiente, la serialización / deserialización funciona como se esperaba. Sin embargo si elCategory
falta en el XML, se utiliza el valor predeterminado (primer elemento en la enumeración). Si intento hacer que la variable enumerada sea nulable (Category?
), el deserializador lanza una excepción porque no puede deserializar un tipo complejo. Dado el siguiente XML (que no contiene el atributo), ¿cómo puedo serializar la enumeración apropiadamente?
<AttributeAssignmentExpression
AttributeId="urn:oasis:names:tc:xacml:3.0:example:attribute:text">
</AttributeAssignmentExpression>
En esta situación, el valor en el objeto deserializado debe ser nulo.
¡Gracias por cualquier ayuda que pueda ofrecer!