Используя драйвер Mongo .Net 2.7.2, я пытаюсь настроить сериализацию свойства словаря.В частности, я бы хотел, чтобы значение словаря a List<string>
сериализовалось как простой массив.
Текущая структура документа, сгенерированная сериализатором
Вот как это свойствов настоящее время сериализуется.Как видите, someProperty
сериализуется как объект, а _t и _v хранят тип и значение .NET
.
viewedBy: Object
someProperty: Object
_t: "System.Collections.Generic.List`1[System.String]"
_v: Array
Я понимаю, что информация о типе хранится для десериализации обратно в c # POCO, но для моего случая мне не нужны эти метаданные, так как мой тип - это просто строковый массив.
Желаемая структура документа
Я бы хотел, чтобы значения свойств сериализовались в виде простых массивов строк, как показано ниже
viewedBy: Object
someProperty: Array
Вот класс, который я пытаюсь настроитьстратегия сериализации для.
public class MyDocument
{
public Dictionary<string, List<string>> ViewedBy { get; set; }
}
Current Mapping
Вот информация об отображении, которую я предоставил для своего класса.
BsonClassMap.RegisterClassMap<MyDocument>(cm =>
{
cm.AutoMap();
cm.MapMember(c => c.ViewedBy)
.SetElementName("viewedBy")
.SetSerializer(new
DictionaryInterfaceImplementerSerializer<Dictionary<string,
List<string>>>(DictionaryRepresentation.Document));
// How do I specify the dictionary value should serialize as simple array?
});
Вопрос
Как я могу дать команду сериализатору сериализовать значение словаря .NET
типа List<string>
для сериализации в простой строковый массив?
Предпочтение отдается гибкому картографическому решению, а не использованию атрибутов.