WCF数据协议中XmlArrayItem标签不起作用的问题

在数据协议中,有一个属性是字符串数组,

1 [System.Xml.Serialization.XmlArrayAttribute(Order = 19)]
2 [System.Xml.Serialization.XmlArrayItemAttribute("CardNumber", typeof(string), IsNullable = false)]
3 [DataMember]
4 public string[] Cards {get; set; }

我想把它序列化成下面的格式

<Cards>
    <CardNumber>123123</CardNumber>
</Cards>

但是转换之后变成了

<Cards>
    <string>123123</string>
</Cards>

解决方法是:

1.创建一个类代替数组

[CollectionDataContract(ItemName="CardNumber")]
public class CardsList : List<string> { }

2.用

[DataMember(Name="Cards")]
public CardsList Cards {get; set; };

替换

[DataMember]
public string[] Cards {get; set; }

注:转自https://stackoverflow.com/questions/37586165/serializing-data-using-xmlarrayitemattribute-not-working-well

如果说,岁月是一首歌,那么我们便是歌者,纵使孤独,仍会固执高歌;如果说,岁月是一段旅程,那么我们便是行者,且行且梦,让生命丰盈。
原文地址:https://www.cnblogs.com/dreamos/p/14667314.html