sql >> Databáze >  >> NoSQL >> MongoDB

Předat informace o typu do MongoDB, aby mohla správně deserializovat typy rozhraní?

Výsledkem je MyClass když ukážeme na typ rozhraní, které by pak mohlo obsahovat jakoukoli třídu Bson, která implementuje toto rozhraní, musíme MongoDB sdělit typ třídy, která může na konci tohoto (všeho) rozhraní. Z tříd pak může odvodit, že ví, jak deserializovat určité BsonDocuments obsahující tyto třídy' 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>();
}

Přidáním třídy MyIntImpl do BsonClassMap nyní ví, jak deserializovat Bson z tohoto typu třídy. Jen se musíte ujistit, že udržujete mapu plnou tříd, které implementují rozhraní, která byste mohli serializovat.

Některé referenční odkazy:Vysoká až nízká úroveň přehled serializace C# MongoDB , příspěvek SO který nastiňuje řešení.




  1. Mongo – Shoda, kde je klíč objektu proměnný

  2. Jak odstranit neověřeného uživatele pomocí Mongoose a TTL

  3. MongoDB:Dotaz na klíč, který má v názvu mezeru

  4. pipelining vs transakce v redis