sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Pasar información de tipo a MongoDB para que pueda deserializar los tipos de interfaz correctamente?

Como resultado de MyClass apuntando a un tipo de interfaz, que luego podría contener cualquier Bson de clase que implemente esa interfaz, tenemos que decirle a MongoDB el tipo de clase que puede estar al final de esa (toda la) interfaz. Luego puede inferir de las clases que sabe cómo deserializar ciertos BsonDocuments que contiene esos Bson de clase.

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>();
}

Agregando la clase MyIntImpl al BsonClassMap ahora sabe cómo deserializar Bson de ese tipo de clase. Solo debe asegurarse de mantener el mapa lleno de clases que implementen interfaces que podría serializar.

Algunos enlaces de referencia:Nivel alto a bajo descripción general de la serialización de C# MongoDB , una publicación SO que describe la solución.