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.