Подтвердить что ты не робот

Как вы используете XMLSerialize для типизированных свойств Enum в С#?

У меня есть простое перечисление:

enum simple 
{ 
  one, 
  two, 
  three 
};

У меня также есть класс, обладающий свойством типа simple. Я попробовал украсить его атрибутом: [XmlAttribute(DataType = "int")]. Однако он не работает, когда я пытаюсь его сериализовать, используя XmlWriter.

Каков правильный способ сделать это? Должен ли я отмечать как перечисление, так и свойство, и если да, с каким типом данных?

4b9b3361

Ответ 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>