我想创建一个自定义XML结构,如下所示:

<Hotels>
    <Hotel />
</Hotels>

为了能够做到这一点,我创建了List的实现。我的代码如下:
[XmlRootAttribute(ElementName="Hotels")]
public class HotelList: List<HotelBasic>

因为List所保存的类未命名为Hotel而是HotelBasic,所以我的xml就像
<Hotels>
   <HotelBasic />
</Hotels>

如何解决此问题而无需实现ISerializableIEnumerable

最佳答案

假设您正在使用XmlSerializer,如果您要做的只是更改HotelBasic类的序列化方式,则可以使用XmlTypeAttribute:

[XmlType(TypeName = "Hotel")]
public class HotelBasic
{
    public string Name { get; set; }
}

HotelList类一起使用时,它将序列化为:
<Hotels xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Hotel>
    <Name>One</Name>
  </Hotel>
  <Hotel>
    <Name>Two</Name>
  </Hotel>
</Hotels>

07-28 14:11