public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options)
{
IDictionary<string, object> obj = value as IDictionary<string, object>;
if (obj == null)
{
bsonWriter.WriteNull();
return;
}
bsonWriter.WriteStartDocument();
foreach (var member in obj)
{
bsonWriter.WriteName(member.Key);
object memberValue = member.Value;
if (memberValue == null)
{
bsonWriter.WriteNull();
}
else
{
nominalType = memberValue.GetType();
var serializer = BsonSerializer.LookupSerializer(nominalType);
serializer.Serialize(bsonWriter, nominalType, memberValue, options);
}
}
bsonWriter.WriteEndDocument();
}