我想序列化幾個對象列表到XML。這些列表是不同類型的,但它們都需要在頂部列表對象上具有一些相同的屬性。在C#中列表的通用序列化
我想獲得是頂層的「計數」和對象的列表中的所有項目名稱:
<JobResult Count="2">
<Job>
<Id>1</Id>
</Job>
<Job>
<Id>2</Id>
</Job>
</JobResult>
然後再列表:
<PersonResult Count="1">
<Person>
<Id>1</Id>
</Person>
</PersonResult>
我使用的代碼是:
[XmlRoot()]
public class Result<T>
{
[XmlElement()]
public List<T> Items { get; set; }
public Result()
{
this.Items = new List<T>();
}
[XmlAttribute("Count")]
public int ItemCount
{
get
{
return this.Items.Count;
}
set
{
}
}
}
var jobs= new Result<Job>();
var persons= new Result<Person>();
我所得到的是:
<ResultOfJob Count="2">
<Item>
<Id>1</Id>
</Item>
<Item>
<Id>2</Id>
</Item>
</ResultOfJob >
我試過這樣的屬性命名,但得到< _x007B_0_x007D_>而不是項目。
[XmlElement({0})]
public List<T> Items { get; set; }
什麼是最好的方式來處理動態命名的項目?
這似乎得到所需的結果,但它似乎並沒有動態做到這一點。我將不得不爲每個想要序列化的新對象編寫一個函數。 – jsturtevant 2012-04-23 12:21:34