gpt4 book ai didi

c# - 序列化强类型对象列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:50:35 25 4
gpt4 key购买 nike

我可能搞砸了设计决策。我没有使用自定义对象的强类型集合,而是使用了通用列表。本质上,我所拥有的是:

public class AreaFields
{
[XmlArray("Items")]
[XmlArrayItem("Item")]
public List<Fields> Fields { set; get; }

[XmlAttribute]
int id { set; get; }
}

public class Fields
{
[XmlAttribute]
public string Name { set; get; }
}

在整个应用程序中,我使用了 List<AreaFields>现在,我需要将列表序列化为 XML。我希望得到的是:

   <SomeXMLTag>
<AreaFields id='1000'>
<Items>
<Item Name="Test1" />
<Item Name="Test2" />
</Items>
</AreaFields>
<AreaFields id='1001'>
<Items>
<Item Name="Test1" />
<Item Name="Test2" />
</Items>
</AreaFields>
</SomeXMLTag>

由于我无法序列化 List<>(我可以吗?),我将不得不序列化列表中的每一项。

Ex: List<AreaFields> list = new List<AreaFields>();
// more code to add to list
list[0].GetRawXML(); //A method i have to serialize

最佳答案

你需要一个包装类;然后根据您的示例序列化 MyWrapper 的实例以获取 xml。

[XmlRoot("SomeXMLTag")]
public class MyWrapper
{
[XmlElement("AreaFields")]
public List<AreaFields> AreaFields { get; set; }
}

public class AreaFields
{
[XmlArray("Items")]
[XmlArrayItem("Item")]
public List<Fields> Fields { set; get; }

[XmlAttribute]
public int id { set; get; }
}

public class Fields
{
[XmlAttribute]
public string Name { set; get; }
}

关于c# - 序列化强类型对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/667881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com