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!

questionAnswers(3)

yourAnswerToTheQuestion