序列化DataContract和空数据成员

3

我遇到了一个序列化空值的问题,实际上我根本不想将它包含进去。

[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的实例等解决方案对我来说都不是选项。


1
你使用的序列化器是什么? - undefined
将 [DataIgnore] 属性放在您不想序列化的属性上。 - undefined
这是一个条件语句。OP希望在属性为空时忽略它!@GeorgeFindulov - undefined
序列化器是 Protobuf,我觉得。 - undefined
1个回答

0

你可以使用EmitDefaultValue

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

根据我的需求来看,我认为这种方式不起作用,因为它会创建 xsi:nil="true" 属性。我希望它是空白的。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接