Как вы используете XMLSerialize для типизированных свойств Enum в С#?
У меня есть простое перечисление:
enum simple
{
one,
two,
three
};
У меня также есть класс, обладающий свойством типа simple
. Я попробовал украсить его атрибутом: [XmlAttribute(DataType = "int")]
. Однако он не работает, когда я пытаюсь его сериализовать, используя XmlWriter
.
Каков правильный способ сделать это? Должен ли я отмечать как перечисление, так и свойство, и если да, с каким типом данных?
Ответы
Ответ 1
В соответствии с ответом Дарина Димитрова - только лишняя вещь, которую я хотел бы указать, заключается в том, что если вы хотите контролировать, как ваши поля enum будут сериализованы, вы можете украсить каждое поле с помощью XmlEnum.
public enum Simple
{
[XmlEnum(Name="First")]
one,
[XmlEnum(Name="Second")]
two,
[XmlEnum(Name="Third")]
three,
}
Ответ 2
Не должно быть никаких проблем с сериализацией свойств перечисления:
public enum Simple { one, two, three }
public class Foo
{
public Simple Simple { get; set; }
}
class Program
{
static void Main(string[] args)
{
using (var writer = XmlWriter.Create(Console.OpenStandardOutput()))
{
var foo = new Foo
{
Simple = Simple.three
};
var serializer = new XmlSerializer(foo.GetType());
serializer.Serialize(writer, foo);
}
}
}
дает:
<?xml version="1.0" encoding="utf-8"?>
<Foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Simple>three</Simple>
</Foo>