【发布时间】:2016-02-18 13:33:16
【问题描述】:
我有一个对象,它有几个用公共 getter 但私有 setter 定义的集合属性,在这种情况下,JsonConvert.PopulateObject 将反序列化的项目添加到这些集合中,而现有项目保持不变。
当此类成员集合在反序列化之前被清除时,我需要一种行为。
我尝试在标有[OnDeserializing] 属性的方法中手动清除集合。
这种方法的问题在于,即使 JSON 字符串中不存在集合属性,它仍然会清除集合。
当只有那些在 JSON 字符串中实际定义的集合被清除时,我需要一种方法。那些未定义的应该保持不变。
谢谢
【问题讨论】:
-
您是否尝试将
ObjectCreationHandling设置为Replace?请参阅文档中的Serialization Settings。 -
否,因为据我了解,这意味着它替换了集合,而不是项目。它会创建一个新的列表实例,这不是我想要的(这就是为什么 setter 是私有的,任何人都不应该因为数据绑定等原因弄乱列表实例)。