【问题标题】:serialization DataContract and NULL datamember序列化 DataContract 和 NULL 数据成员
【发布时间】:2016-03-22 12:33:28
【问题描述】:

我在序列化空值时遇到问题。实际上我根本不想包含它。

[DataContract]
public class SearchItem{
   public SearchCriteria()
    {
        IsActive = true;
        IsFiltered = true;
    }

    [DataMember(Order=01)]
    public bool? IsActive { get; set; }
    [DataMember(Order=02)]
    public bool IsPriceFiltered { get; set; }

}

当我想像这样实例化时

 new SearchCriteria(){
 IsActive = null, 
}

它仍然会序列化IsActive 属性。

有什么建议可以解决这个问题吗?

创建为enum 或使用其他constructor 实例化等解决方案对我来说不是一个选项。

【问题讨论】:

  • 你的序列化器是什么?
  • 将 [DataIgrore] 属性放在你不想序列化的属性上
  • 这是有条件的。如果属性为空,OP 想忽略! @GeorgeFindulov
  • 我认为序列化器是 protobuff

标签: c# .net serialization null


【解决方案1】:

您可以使用EmitDefaultValue

[DataMember(Order=01, EmitDefaultValue=false)]
public bool? IsActive { get; set; }

【讨论】:

  • 我认为这不能满足我的需要,因为它创建了xsi:nil="true" 属性。我想把它留空。
猜你喜欢
  • 2020-03-09
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多