Als resultaat van MyClass
verwijzend naar een interfacetype, dat dan elke klasse 'Bson' kan bevatten die die interface implementeert, moeten we MongoDB het type klasse vertellen dat aan het einde van die (alle) interface kan. Het kan dan uit de klassen afleiden dat het weet hoe het bepaalde BsonDocuments
moet deserialiseren met die klasse' 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>();
}
Door de klasse MyIntImpl
. toe te voegen naar de BsonClassMap weet het nu hoe Bson van dat klassetype moet worden gedeserialiseerd. Je moet er alleen voor zorgen dat je de kaart gevuld houdt met klassen die interfaces implementeren die je zou kunnen serialiseren.
Enkele referentielinks:Hoog naar laag niveau overzicht van C# MongoDB-serialisatie , een SO-bericht dat schetst de oplossing.