À la suite de MyClass
pointant vers un type d'interface, qui pourrait alors contenir n'importe quelle classe 'Bson qui implémente cette interface, nous devons indiquer à MongoDB le type de classe' qui peut à la fin de cette (toute) l'interface. Il peut alors déduire des classes qu'il sait comment désérialiser certains BsonDocuments
contenant ces classes' 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>();
}
En ajoutant la classe MyIntImpl
au BsonClassMap, il sait maintenant comment désérialiser Bson à partir de ce type de classe. Vous devez juste vous assurer de garder la carte remplie de classes qui implémentent des interfaces que vous pourriez sérialiser.
Quelques liens de référence :Haut à bas niveau présentation de la sérialisation C# MongoDB , un message SO qui décrit la solution.