protobuf-net是否支持HybridDictionary?

时间:2017-07-25 05:47:51

标签: c# protobuf-net

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

1 个答案:

答案 0 :(得分:1)

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

  • 无法理解HybridDictionary的数据合约,因为它只会为关键字和值广告object; protobuf-net 真的,真的想要理解所涉及的类型
  • 它不是吸引人的来支持它,因为在很多情况下它需要拳击 - 通常是密钥(如果不是string),但通常值

因此,我强烈建议使用Dictionary<TKey, TValue>或实现IDictionary<TKey, TValue>的内容。理论上我们可以添加API,允许你告诉它如何解释键和值(显然是在库中支持它的工作),但我怀疑是否会< em>实际上是真正的好处。坦率地说,我不确定这些天(或过去多年)使用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)中首选的新方法互换(数据方式)。