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) 中首选的新方法互换(数据方面)。
我有一个 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) 中首选的新方法互换(数据方面)。