Som et resultat af MyClass
peger på en grænsefladetype, som så kunne indeholde en hvilken som helst klasse' Bson, der implementerer den grænseflade, er vi nødt til at fortælle MongoDB hvilken type klasse', der kan i slutningen af den (hele) grænsefladen. Den kan så udlede fra klasserne, at den ved, hvordan man deserialiserer visse BsonDocuments
indeholdende disse 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>();
}
Ved at tilføje klassen MyIntImpl
til BsonClassMap ved den nu, hvordan man deserialiserer Bson fra den klassetype. Du skal bare sørge for at holde kortet fyldt med klasser, der implementerer grænseflader, som du måske serialiserer.
Nogle referencelinks:Højt til lavt niveau oversigt over C# MongoDB-serialisering , et SO-indlæg der skitserer løsningen.