Como serializar / desserializar a enumeração XML opcional em c #?
Eu estou tentando descobrir como serializar / desserializar uma listagem XML para C # que tem um atributo opcional que é um tipo enumerado. O seguinte é minha classe c #:
public class AttributeAssignmentExpressionElement : XACMLElement
{
[XmlAttribute]
public string AttributeId { get; set; }
[XmlAttribute]
public Category Category { get; set; }
}
MinhasCategory
enumeração é definida da seguinte forma:
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
}
QuandoCategory
está presente no arquivo XML correspondente, serialização / desserialização funciona conforme o esperado. No entanto, se oCategory
está faltando no XML, o valor padrão é usado (primeiro item na enumeração). Se eu tentar tornar a variável enumerada anulável (Category?
), o desserializador lança uma exceção porque não é possível desserializar um tipo complexo. Dado o seguinte XML (que não contém o atributo), como posso serializar a enumeração adequadamente?
<AttributeAssignmentExpression
AttributeId="urn:oasis:names:tc:xacml:3.0:example:attribute:text">
</AttributeAssignmentExpression>
Nessa situação, o valor no objeto desserializado deve ser nulo.
Obrigado por qualquer ajuda que você possa oferecer!