簡體   English   中英

如何在c#中使用XMLSerialize for Enum類型的屬性?

[英]How do you use XMLSerialize for Enum typed properties in c#?

我有一個簡單的枚舉:

enum simple 
{ 
  one, 
  two, 
  three 
};

我也有一個類型simple的類。 我嘗試使用以下屬性進行裝飾: [XmlAttribute(DataType = "int")] 但是,當我嘗試使用XmlWriter序列化它時它失敗了。

這樣做的正確方法是什么? 我是否必須標記枚舉本身以及屬性,如果是,請使用哪種數據類型?

根據Darin Dimitrov的回答 - 我要指出的另一件事是,如果你想控制枚舉字段的序列化方式,那么你可以使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM