【发布时间】: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