使用XmlArrayItemAttribute序列化数据不能很好地工作

时间:2016-06-02 08:10:43

标签: wcf serialization .net-4.0

我有这个DataContract,它是一个字符串数组:

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

正如我所读,它应该像这样序列化:

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

但我还是得到了:

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

它出了什么问题?

1 个答案:

答案 0 :(得分:1)

您可以改用 CollectionDataContract 。 首先,创建一个类:

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

然后,替换这一行:

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

由此:

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

希望它有所帮助。