Преобразование словаря <string, object> в BsonDocument без поля _t
я используюToBsonDocument
метод расширения изMongoDB.Bson
преобразовать этот словарь:
var dictionary = new Dictionary<string, object> {{"person", new Dictionary<string, object> {{"name", "John"}}}};
var document = dictionary.ToBsonDocument();
И вот итоговый документ:
{ "person" :
{ "_t" : "System.Collections.Generic.Dictionary`2[System.String,System.Object]",
"_v" : { "name" : "John" } } }
Есть ли способ избавиться от этих вещей _t / _v? Я хотел бы, чтобы полученный документ выглядел так:
{ "person" : { "name" : "John" } }
UPD: я нашел код в DictionaryGenericSerializer:
if (nominalType == typeof(object))
{
var actualType = value.GetType();
bsonWriter.WriteStartDocument();
bsonWriter.WriteString("_t", TypeNameDiscriminator.GetDiscriminator(actualType));
bsonWriter.WriteName("_v");
Serialize(bsonWriter, actualType, value, options); // recursive call replacing nominalType with actualType
bsonWriter.WriteEndDocument();
return;
}
Таким образом, кажется, что с этим сериализатором не слишком много опций, когда тип значенияobject
.