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.