代码之家  ›  专栏  ›  技术社区  ›  Abdelfattah Radwan

在c_中是否有shouldserialize[propertyname]的替代方法?

  •  2
  • Abdelfattah Radwan  · 技术社区  · 7 年前

    我最近写了很多代码,其中涉及到使用json.net进行序列化,由于我序列化的数据的性质,有时并不需要对它们的所有属性进行序列化,因此,我按如下方式执行…

    public int Foo { get; set; }
    
    public bool ShouldSerializeFoo() => Foo > -1;
    

    这很好,也很管用,但是如果你有很多财产的话,那就需要做很多工作( 在我的情况下,我有超过100个 )

    所以,我想知道除了写这些方法还有没有别的选择。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Marc Gravell    7 年前

    另一种选择是 [DefaultValue(...)] 并使用 DefaultValueHandling.Ignore 特点:

    [DefaultValue(-1), JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
    public int Foo { get; set; } = -1;
    

    请注意,将该值初始化为默认值非常重要,因此 = -1; 在属性初始值设定项中。