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

Passare le informazioni sul tipo a MongoDB in modo che possa deserializzare correttamente i tipi di interfaccia?

Come risultato di MyClass puntando a un tipo di interfaccia, che potrebbe quindi contenere qualsiasi classe 'Bson che implementa quell'interfaccia, dobbiamo dire a MongoDB il tipo di classe' che può alla fine di quella (tutta) interfaccia. Può quindi dedurre dalle classi che sa come deserializzare determinati BsonDocuments contenente quelle classi '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>();
}

Aggiungendo la classe MyIntImpl a BsonClassMap ora sa come deserializzare Bson da quel tipo di classe. Devi solo assicurarti di mantenere la mappa piena di classi che implementano interfacce che potresti serializzare.

Alcuni link di riferimento:Livello da alto a basso panoramica della serializzazione C# MongoDB , un post SO che delinea la soluzione.