MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Passando informações de tipo para o MongoDB para que ele possa desserializar os tipos de interface corretamente?


Como resultado de MyClass apontando para um tipo de interface, que poderia conter qualquer classe 'Bson que implemente essa interface, temos que informar ao MongoDB o tipo de classe' que pode no final dessa (toda a) interface. Ele pode então inferir das classes que sabe como desserializar certos BsonDocuments contendo Bson daquela classe.
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>();
}

Adicionando a classe MyIntImpl para o BsonClassMap agora ele sabe como desserializar o Bson desse tipo de classe. Você só precisa manter o mapa preenchido com classes que implementam interfaces que você pode serializar.

Alguns links de referência:Nível alto a baixo visão geral da serialização do C# MongoDB , uma postagem SO que descreve a solução.