0

没有值时如何使用 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。

4

1 回答 1

1

它应该工作。除非你正在做 -

yourObject.OrderItems = new List<OrderItem>();

在你的代码某处。为此,内存已分配给列表,并且不再具有默认值null!相反,它是一个空列表OrderItem

因此,如果您在序列化之前在代码中的某处初始化列表并将添加到您的 XML中,则 EmitDefaultValue将不起作用。<OrderItems />

于 2013-08-21T10:00:13.740 回答