Jak serializować / deserializować opcjonalne wyliczenie XML w C #?

Próbuję dowiedzieć się, jak serializować / deserializować listę XML do C #, która ma opcjonalny atrybut, który jest typem wyliczeniowym. Oto moja klasa C #:

public class AttributeAssignmentExpressionElement : XACMLElement
{
    [XmlAttribute]
    public string AttributeId { get; set; }

    [XmlAttribute]
    public Category Category { get; set; }                   
}

MójCategory wyliczenie definiuje się następująco:

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
}  

GdyCategory jest obecny w odpowiednim pliku XML, serializacja / deserializacja działa zgodnie z oczekiwaniami. Jeśli jednakCategory brakuje w XML, używana jest wartość domyślna (pierwszy element w wyliczeniu). Jeśli spróbuję wprowadzić wyliczoną zmienną do zniesienia (Category?) deserializer zgłasza wyjątek, ponieważ nie jest w stanie deserializować typu złożonego. Biorąc pod uwagę następujący XML (który nie zawiera atrybutu), w jaki sposób mogę odpowiednio serializować wyliczenie?

<AttributeAssignmentExpression
    AttributeId="urn:oasis:names:tc:xacml:3.0:example:attribute:text">       
</AttributeAssignmentExpression>

W tej sytuacji wartość w deserializowanym obiekcie powinna być null.

Dziękujemy za pomoc, jaką możesz zaoferować!

questionAnswers(3)

yourAnswerToTheQuestion