【问题标题】:Is Microsoft AVRO able to serialize ConcurrentDictionary?Microsoft AVRO 是否能够序列化 ConcurrentDictionary?
【发布时间】:2015-04-13 23:28:21
【问题描述】:

我正在尝试使用Microsoft.Hadoop.Avro 库进行序列化。但它无法序列化ConcurrentDictionary 类型。它将ConcurrentDictionary 视为常规Dictionary 并查找Add 方法。当然不存在。

我错过了一些设置吗?我必须明确地将“allowNullable”设置为 true 以允许字符串为空......

或者如何扩展序列化程序?我也没有找到有关此的任何信息。我知道它是开源的,但我不想接触库代码,只是扩展它。

编辑: 一个示例类:

    [Serializable]
    [DataContract]
    public class CacheItem
    {
        [DataMember]
        private ConcurrentDictionary<string, CacheItemEntity> _cacheItemDictionary = new ConcurrentDictionary<string, CacheItemEntity>();

        ......
    }

2015 年 4 月 16 日编辑: 对于有兴趣的人,Microsoft AVRO 库目前还不支持 ConcurrentDictionary。并且没有确定的计划在不久的将来支持它。

【问题讨论】:

  • 您最好的选择可能是(如果可能的话)将字典用作纯粹用于序列化目的的中间体。也许可以为此创建您自己的数据合约解析器或AvroContractResolver 的实现。您能否为您遇到问题的类之一提供一个示例类,包括 [DataContract] 注释?

标签: c# hadoop serialization avro concurrentdictionary


【解决方案1】:

没有机会,对于线路 /ipc 上的东西,我倾向于使用简单的类型数组、字符串、字节等,甚至 Datetime 和 ulong 也会产生您浪费大量时间寻找的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2021-01-27
    • 2022-08-22
    • 2010-09-16
    • 2020-03-04
    相关资源
    最近更新 更多