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ć!