sql >> Database teknologi >  >> NoSQL >> MongoDB

Sende typeoplysninger til MongoDB, så det kan deserialisere interfacetyper korrekt?

Som et resultat af MyClass peger på en grænsefladetype, som så kunne indeholde en hvilken som helst klasse' Bson, der implementerer den grænseflade, er vi nødt til at fortælle MongoDB hvilken type klasse', der kan i slutningen af ​​den (hele) grænsefladen. Den kan så udlede fra klasserne, at den ved, hvordan man deserialiserer visse BsonDocuments indeholdende disse 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>();
}

Ved at tilføje klassen MyIntImpl til BsonClassMap ved den nu, hvordan man deserialiserer Bson fra den klassetype. Du skal bare sørge for at holde kortet fyldt med klasser, der implementerer grænseflader, som du måske serialiserer.

Nogle referencelinks:Højt til lavt niveau oversigt over C# MongoDB-serialisering , et SO-indlæg der skitserer løsningen.




  1. Find poster fra 7 dage siden fra nu af i MongoDB

  2. Hvordan kan jeg ophæve flere objekter med MongoDB &Node.js?

  3. Mongoose-forespørgsel, hvor værdien ikke er null

  4. Sammensatte indekser for OR+Sorteringsforespørgsel i mongodb