使用List对象时遇到问题:
[DataContract]
public class Recipe
{
[DataMember(Name="Allergies")]
public List<AllergyModel> Allergies { get; set; }
}
[DataContract]
public class AllergyModel
{
public string Allergy { get; set; }
}
如何使生成的XML不包含AllergyModel节点?当我来阅读Recipe参数时,Allergies列表属性为null,因为在原始XML中,结构没有AllergyModel节点。
<Allergies>
<a:AllergyModel>
<a:Allergy>nuts</a:Allergy>
</a:AllergyModel>
<a:AllergyModel>
<a:Allergy>wheat</a:Allergy>
</a:AllergyModel>
</Allergies>
答案 0 :(得分:3)
尝试使用自定义集合:
[CollectionDataContract(Name = "Allergies", ItemName = "Allergy")]
public class AllergyList : List<string>
{
...
}
使用此集合代替List<AllergyModel>
。重要的是,您可以传递自定义集合中项目的名称。
答案 1 :(得分:1)
您可以使用MessageContract属性,并将IsWrapped参数设置为false