Вам не нужно использовать BsonClassMap.RegisterClassMap
, если вам не нужна настраиваемая сериализация ( документация ).Все ваши классы будут десиализованы в соответствии с правилами по умолчанию.
Также я немного изменил ваш пример, чтобы он заработал (я заменил myValueMap
класс на Словарь):
public class myProdData
{
public Dictionary<string, myValue> Mapping { get; set; }
}
static void Main(string[] args)
{
var o = new mySystemPosition()
{
ProdData = new myProdData()
{
Mapping = new Dictionary<string, myValue>()
{
{"123", new myValue() {Id = 1, Label = "Item1"}},
{"345", new myValue() {Id = 2, Label = "Item2"}},
}
}
};
var json = o.ToJson();
Console.WriteLine(json);
Console.ReadKey();
}
Вот вывод консоли (просто хорошо отформатированный):
{
"Text":null,
"ProdData":{
"Mapping":{
"123":{
"_id":1,
"Label":"Item1"
},
"345":{
"_id":2,
"Label":"Item2"
}
}
}
}
Вы можете проверить сериализацию, используя метод расширения ToJson()
, чтобы увидеть, что все правильно, и после этого использовать ToBson()
при необходимости.