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 />.

私は DataContractSerializer を使用しています。

4

1 に答える 1

1

それはうまくいくはずです。あなたがしていない限り -

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

コードのどこかに。そのために、メモリがリストに割り当てられ、デフォルト値がなくなりましたnull! むしろ、その空のリストですOrderItem

したがって、シリアル化の前にコードのどこかでリストを初期化している場合、 EmitDefaultValue<OrderItems />は機能せず、XML に追加されます。

于 2013-08-21T10:00:13.740 に答える