W wyniku MyClass
wskazując na typ interfejsu, który może następnie przechowywać dowolną klasę Bson, która implementuje ten interfejs, musimy powiedzieć MongoDB typ klasy, która może znajdować się na końcu tego (całego) interfejsu. Następnie może wywnioskować z klas, że wie, jak deserializować określone BsonDocuments
zawierające Bson tej klasy.
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>();
}
Dodając klasę MyIntImpl
do BsonClassMap teraz wie, jak deserializować Bson z tego typu klasy. Musisz tylko upewnić się, że mapa jest wypełniona klasami, które implementują interfejsy, które możesz serializować.
Niektóre linki referencyjne:Od wysokiego do niskiego poziomu omówienie serializacji C# MongoDB , post SO który przedstawia rozwiązanie.