gpt4 book ai didi

c# - 反序列化到自定义列表

转载 作者:太空狗 更新时间:2023-10-29 21:21:51 26 4
gpt4 key购买 nike

<分区>

出于性能原因,我创建了一个自定义列表类来维护一组项目 ID:

public class MyCustomList : List<ItemWithID>
{
private HashSet<int> itemIDs = new HashSet<int>();

public MyCustomList()
{
}

[JsonConstructor]
public MyCustomList(IEnumerable<ItemWithID> collection)
: base(collection)
{
itemIDs = new HashSet<int>(this.Select(i => i.ID));
}

public new void Add(ItemWithID item)
{
base.Add(item);
itemIDs.Add(item.ID);
}

public new bool Remove(ItemWithID item)
{
var removed = base.Remove(item);
if (removed)
{
itemIDs.Remove(item.ID);
}
return removed;
}

public bool ContainsID(int id)
{
return itemIDs.Contains(id);
}
}

我想从一个简单的 JSON 数组反序列化这个列表,例如:

JsonConvert.DeserializeObject<MyCustomList>("[{ID:8},{ID:9}]");

这将导致 JSON.NET 只调用空的构造函数,所以我的 itemIDs 列表仍然是空的。也不会调用 Add 方法。

JSON.NET 如何将项目添加到列表中以便我可以在该位置添加逻辑。

(这是关于没有应该在 json 字符串中持久存在的属性的反序列化,所以建议的重复问题与这个无关)

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com