Wie serialisiere / deserialisiere ich eine optionale XML-Enumeration in C #?

Ich versuche herauszufinden, wie man eine XML-Auflistung in C # serialisiert / deserialisiert, die ein optionales Attribut aufweist, das ein Aufzählungstyp ist. Folgendes ist meine C # -Klasse:

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

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

MeineCategory Aufzählung ist wie folgt definiert:

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
}  

WannCategory ist in der entsprechenden XML-Datei vorhanden, Serialisierung / Deserialisierung funktioniert wie erwartet. Wenn jedoch dieCategory Fehlt der XML-Code, wird der Standardwert verwendet (erstes Element in der Aufzählung). Wenn ich versuche, die aufgezählte Variable auf null zu setzen (Category?) löst der Deserializer eine Ausnahme aus, weil er einen komplexen Typ nicht deserialisieren kann. Wie kann ich die Aufzählung angesichts der folgenden XML-Datei (die das Attribut nicht enthält) entsprechend serialisieren?

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

In diesem Fall sollte der Wert im deserialisierten Objekt Null sein.

Vielen Dank für jede Hilfe, die Sie anbieten können!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage