C#/MongoDB-将枚举字典键序列化为字符串
我正在尝试序列化一个字典字典,其中父字典的键为typeC#/MongoDB-将枚举字典键序列化为字符串,c#,mongodb,dictionary,enums,C#,Mongodb,Dictionary,Enums,我正在尝试序列化一个字典字典,其中父字典的键为typeenum,子字典的键为typeDateTime。在尝试插入我的收藏时,我遇到了 使用DictionaryRepresentation时。文档键值必须序列化为字符串 我读过讨论将enum序列化为string的论坛,但是对于当前存在的模型定义,我不确定如何使用此方法 当前使用的两个字典模型只是字典类的实现: 索引值 { public class IndexValues : Dictionary<Index, DateDictiona
enum
,子字典的键为typeDateTime
。在尝试插入我的收藏时,我遇到了
使用DictionaryRepresentation时。文档键值必须序列化为字符串
我读过讨论将enum
序列化为string
的论坛,但是对于当前存在的模型定义,我不确定如何使用此方法
当前使用的两个字典模型只是字典
类的实现:
索引值
{
public class IndexValues : Dictionary<Index, DateDictionary> { }
}
我只是通过实例化两个类的新实例并将值添加到所需类型中,向主程序中的字典添加值
IndexValues indexRecords = new IndexValues();
...
var enumHead = (Index)Enum.Parse(typeof(Index), header[l]); // header is simply a list of strings
...
DateDictionary dateDict = new DateDictionary();
var date = Convert.ToDateTime(dataLine[j]); // dataLine is simply a list of strings
var value = Convert.ToDouble(dataLine[k]);
if (indexRecords.ContainsKey(enumHead))
{
indexRecords[enumHead].Add(date, value);
}
else
{
dateDict.Add(date, value);
indexRecords.Add(enumHead, dateDict);
}
我尝试在模型定义中定义键和值,并对enum
使用[BsonRepresentation(BsonType.String)]
和DateTime
值使用[bsondictionaroptions(DictionaryRepresentation.Document)]
对日期字典使用,但我仍然遇到同样的问题
在这种情况下,我遗漏了什么?正确的方向是什么?作为参考,我使用的是C#driver v2.8.1。事实证明我需要两个序列化程序而不是一个。我在全球范围内定义了这些,并且能够毫无问题地插入
BsonSerializer.RegisterSerializer(new EnumSerializer<Index>(BsonType.String));
BsonSerializer.RegisterSerializer(new DateTimeSerializer(DateTimeKind.Local, BsonType.String));
BsonSerializer.RegisterSerializer(新的EnumSerializer(BsonType.String));
RegisterSerializer(新的DateTimeSerializer(DateTimeKind.Local,BsonType.String));
原来我需要两个序列化程序而不是一个。我在全球范围内定义了这些,并且能够毫无问题地插入
BsonSerializer.RegisterSerializer(new EnumSerializer<Index>(BsonType.String));
BsonSerializer.RegisterSerializer(new DateTimeSerializer(DateTimeKind.Local, BsonType.String));
BsonSerializer.RegisterSerializer(新的EnumSerializer(BsonType.String));
RegisterSerializer(新的DateTimeSerializer(DateTimeKind.Local,BsonType.String));
BsonSerializer.RegisterSerializer(new EnumSerializer<Index>(BsonType.String));
BsonSerializer.RegisterSerializer(new DateTimeSerializer(DateTimeKind.Local, BsonType.String));