Может ли Microsoft AVRO сериализовать ConcurrentDictionary?

Я пытаюсь использовать библиотеку Microsoft.Hadoop.Avro для сериализации. Но не удается сериализовать тип ConcurrentDictionary. Он обрабатывает ConcurrentDictionary как обычный Dictionary и ищет метод Add. Конечно, не существует.

Я пропустил какие-то настройки? Мне пришлось явно установить для «allowNullable» значение true, чтобы строка была нулевой......

Или как я могу расширить сериализатор? Я тоже не нашел никакой информации об этом. Я знаю, что это с открытым исходным кодом, но я не хочу трогать код библиотеки, просто расширить его.

РЕДАКТИРОВАТЬ: Пример класса:

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

        ......
    }

РЕДАКТИРОВАТЬ от 16/04/2015: Для тех, кто заинтересован, библиотека Microsoft AVRO не поддерживает ConcurrentDictionary до этой даты. И нет подтвержденного плана по его поддержке в ближайшее время.


person Allen Zhang    schedule 13.04.2015    source источник
comment
Лучшим вариантом может быть (если это возможно в вашем сценарии) использование словаря в качестве промежуточного звена исключительно для целей сериализации. Возможно, для этого можно создать собственный преобразователь контрактов данных или реализацию AvroContractResolver. Не могли бы вы предоставить пример класса, включая аннотации [DataContract] для одного из классов, с которым у вас возникли проблемы?   -  person Alex    schedule 14.04.2015


Ответы (1)


Нет шансов, для вещей на проводе / ipc я склонен использовать простые типы массивов, строк, байтов и т. Д., Даже Datetime и ulong могут вызвать проблемы, на поиск которых вы тратите много времени.

person user1496062    schedule 28.07.2016