Som ett resultat av MyClass
pekar på en gränssnittstyp, som sedan kan hålla vilken klass som helst Bson som implementerar det gränssnittet, måste vi berätta för MongoDB vilken typ av klass som kan i slutet av det (hela) gränssnittet. Den kan sedan dra slutsatsen från klasserna att den vet hur man deserialiserar vissa BsonDocuments
som innehåller dessa klass' 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>();
}
Genom att lägga till klassen MyIntImpl
till BsonClassMap vet den nu hur man deserialiserar Bson från den klasstypen. Du måste bara se till att kartan är fylld med klasser som implementerar gränssnitt som du kan serialisera.
Några referenslänkar:Hög till låg nivå översikt över C# MongoDB-serialisering , ett SO-inlägg som beskriver lösningen.