sql >> Databasteknik >  >> NoSQL >> MongoDB

Skicka typinformation till MongoDB så att den kan deserialisera gränssnittstyper ordentligt?

Som ett resultat av MyClass pekar på en gränssnittstyp, som sedan kan hålla vilken klass som helst Bson som implementerar det gränssnittet, måste vi berätta för MongoDB vilken typ av klass som kan i slutet av det (hela) gränssnittet. Den kan sedan dra slutsatsen från klasserna att den vet hur man deserialiserar vissa BsonDocuments som innehåller dessa klass' 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>();
}

Genom att lägga till klassen MyIntImpl till BsonClassMap vet den nu hur man deserialiserar Bson från den klasstypen. Du måste bara se till att kartan är fylld med klasser som implementerar gränssnitt som du kan serialisera.

Några referenslänkar:Hög till låg nivå översikt över C# MongoDB-serialisering , ett SO-inlägg som beskriver lösningen.




  1. Kafka diskbänkskontakt:Inga uppgifter tilldelade, även efter omstart

  2. konvertera från blob till binär för att spara den till mongodb

  3. Mongo hitta värde med okänd föräldranyckel

  4. Ska vi använda dbref eller inbäddat dokument i en lästung applikation