私は簡単な列挙型を持っています:
_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>