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

Übergeben von Typinformationen an MongoDB, damit Schnittstellentypen ordnungsgemäß deserialisiert werden können?

Als Ergebnis von MyClass Wenn wir auf einen Schnittstellentyp zeigen, der dann jede beliebige Klasse Bson enthalten könnte, die diese Schnittstelle implementiert, müssen wir MongoDB den Typ der Klasse mitteilen, der am Ende dieser (der gesamten) Schnittstelle verwendet werden kann. Es kann dann aus den Klassen schließen, dass es weiß, wie bestimmte BsonDocuments deserialisiert werden enthält diese Klasse 'Bson.

public interface IMyInterface
{
    String Name { get; set; }
}

public class MyIntImpl : IMyInterface
{
    public String Name { get; set; }
}

public class MyClass
{
    public IMyInterface IntRef { get; set; }

    public MyClass()
    {
        IntRef = new MyIntImpl();
    }
}

// When starting up MongoDB
private void RegisterClasses()
{
    BsonClassMap.RegisterClassMap<MyIntImpl>();
}

Durch Hinzufügen der Klasse MyIntImpl zur BsonClassMap weiß es jetzt, wie Bson von diesem Klassentyp deserialisiert wird. Sie müssen nur sicherstellen, dass die Map mit Klassen gefüllt ist, die Schnittstellen implementieren, die Sie möglicherweise serialisieren.

Einige Referenzlinks:High to low level Überblick über die C# MongoDB-Serialisierung , ein SO-Beitrag das skizziert die Lösung.