MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Json.NET + MongoDB Bson gut zusammenspielen lassen

Ja, Sie müssen die Konvertierung zwischen JObject explizit implementieren und BsonDocument Typ. Sie können Ihren eigenen Konverter implementieren und Attribute verwenden, um das Durchlaufen Ihrer C#-Typstruktur zu vermeiden. Versuchen Sie:

public class Detail
{
    [BsonSerializer(typeof(DynamicSerializer))]
    public dynamic Value { get; set; }
}

public class DynamicSerializer : SerializerBase<dynamic>
{
    public override dynamic Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
    {
        var myBSONDoc = BsonDocumentSerializer.Instance.Deserialize(context);
        return (dynamic)JObject.Parse(context.ToString());
    }

    public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, dynamic value)
    {
        var bson = MongoDB.Bson.BsonDocument.Parse(value.ToString());
        BsonDocumentSerializer.Instance.Serialize(context, args, bson);
    }
}