То, как Вы используете XMLSerialize для Перечисления, ввело свойства в c#?

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

enum simple 
{ 
  one, 
  two, 
  three 
};

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

Что надлежащий путь состоит в том, чтобы сделать это? Я должен отметить само перечисление, а также свойство, и если так, с который тип данных?

27
задан Chad Nouis 9 September 2015 в 17:41
поделиться

2 ответа

Согласно ответу Дарина Димитрова - единственное, что я хотел бы отметить, это то, что если вы хотите контролировать сериализацию полей перечисления, вы можете украсить каждое поле атрибутом XmlEnum .

public enum Simple
{
      [XmlEnum(Name="First")]
      one,
      [XmlEnum(Name="Second")]
      two,
      [XmlEnum(Name="Third")]
      three,
}
46
ответ дан 28 November 2019 в 04:33
поделиться

Проблем с сериализацией свойств перечисления быть не должно:

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>
24
ответ дан 28 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: