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!