如果列表节点没有值,如何用DataContractSerializer隐藏它?
[DataContract(Namespace = "")]
public class Order
{
[DataMember(EmitDefaultValue = false)]
public string Name { get; set; }
[DataMember(EmitDefaultValue = false)]
public List<OrderItem> OrderItems { get; set; }
}
如果Name没有值,它将被隐藏,但如果OrderItems没有值,它将显示为<OrderItems />.
我正在使用DataContractSerlializer。
答案 0 :(得分:1)
它应该工作。除非你在做 -
yourObject.OrderItems = new List<OrderItem>();
在你的代码中的。
为此,内存分配给列表,它不再是默认值null
!
相反,它是OrderItem
因此,如果您在序列化之前在代码中的某个位置初始化列表,EmitDefaultValue将无效,并且会将<OrderItems />
添加到您的XML中。