protobuf-net 是否支持 HybridDictionary?

Does protobuf-net supports HybridDictionary?

我有一个 HybridDictionary 对象。是否可以使用 Protobuf-net 序列化 HybridDictionary 对象?

目前没有,并且有充分的理由:

  • 无法理解 HybridDictionary 的数据契约,因为它只为键和值通告 object; protobuf-net 真的,真的 想了解涉及的类型
  • 没有吸引力支持它,因为在许多情况下它需要装箱 - 通常是钥匙(如果不是string), 但通常值

因此,我强烈建议使用 Dictionary<TKey, TValue> 或实现 IDictionary<TKey, TValue> 的东西。从理论上讲,我们可以添加 API,让您 告诉它 如何解释键和值(并且显然会在库中进行支持),但我怀疑是否这 实际上 会带来 真正的 好处。坦率地说,我不确定这些天(或过去很多年)使用 HybridDictionary 有什么意义。


实际上,直到 2.3.0,protobuf-net 才 真正 直接支持 Dictionary<TKey, TValue> - 至少,不是你想的那样:直到map<...,...> 功能已完全实现,它 实际上 看到的是类似列表的东西,即可以解释为 {some type} 序列的东西,带有Add({some type}) 方法。在字典的情况下,{some type} 恰好是 KeyValuePair<TKey, TValue> 反过来 可以解释为类似元组的类型(成员完全匹配构造函数,所以根据构造函数参数推断契约)。方便的是,这与 map<...,...> 使用的形状完全相同,因此这种方法可以与 2.3.0 (which is discussed more here) 中首选的新方法互换(数据方面)。