【发布时间】:2012-03-05 22:08:00
【问题描述】:
我有一个数组,其索引映射回Enum 值。我想使用 C# Xml 序列化库来序列化这个数组。但是,我希望每个 Xml 节点都说出它所代表的 Enum 类型的名称。我该怎么做?
例子:
public class NumberOfEmployees
{
public enum EmployeeType { Lawyer, Doctor, Engineer };
public int[] NumEmployees { get; set; }
// Constructor initializes array to size of "EmployeeType"
public NumberOfEmployees()
{
int size = Enum.GetValues(typeof(EmployeeType)).Length;
this.NumEmployees = new int[size];
}
}
Main()
{
NumberOfEmployees numEmployees = new NumberOfEmployees();
// Add doctors, lawyers, engineers, etc...
// numEmployees.NumEmployees[(int)NumberOfEmployees.Lawyer] = 3;
// numEmployees.NumEmployees[(int)NumberOfEmployees.Doctor] = 2;
// numEmployees.NumEmployees[(int)NumberOfEmployees.Engineer] = 1;
// Serialize to "file"
FileStream fs = new FileStream(file, FileMode.OpenOrCreate);
XmlSerializer xml = new XmlSerializer(typeof(NumberOfEmployees));
xml.Serialize(fs, numEmployees);
fs.Close();
}
最终结果是看起来像这样的 xml:
<NumEmployees>
<int>3</int>
<int>2</int>
<int>1</int>
</NumEmployees>
但我想要的是:
<NumEmployees>
<Lawyer>3</Lawyer>
<Doctor>2</Doctor>
<Engineer>1</Engineer>
</NumEmployees>
我不能单独存储每个数字——它必须是一个数组。
谢谢。
【问题讨论】:
-
可惜你的枚举不是Doctor, Lawyer, Lutheran :-)
标签: c# xml serialization xml-serialization