У меня есть простое перечисление:
enum simple
{
one,
two,
three
};
У меня также есть класс, который имеет свойство типа simple
. Я пытался украсить его атрибутом: [XmlAttribute(DataType = "int")]
. Однако это перестало работать, когда я пытаюсь сериализировать его с помощью XmlWriter
.
Что надлежащий путь состоит в том, чтобы сделать это? Я должен отметить само перечисление, а также свойство, и если так, с который тип данных?
Согласно ответу Дарина Димитрова - единственное, что я хотел бы отметить, это то, что если вы хотите контролировать сериализацию полей перечисления, вы можете украсить каждое поле атрибутом XmlEnum .
public enum Simple
{
[XmlEnum(Name="First")]
one,
[XmlEnum(Name="Second")]
two,
[XmlEnum(Name="Third")]
three,
}
Проблем с сериализацией свойств перечисления быть не должно:
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>