В резултат на MyClass
сочейки към тип интерфейс, който след това може да съдържа всеки клас' Bson, който имплементира този интерфейс, ние трябва да кажем на MongoDB типа клас', който може в края на този (всички) интерфейс. След това може да заключи от класовете, че знае как да десериализира определени BsonDocuments
съдържащ тези класове 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>();
}
Чрез добавяне на клас MyIntImpl
към BsonClassMap вече знае как да десериализира Bson от този тип клас. Просто трябва да се уверите, че поддържате картата пълна с класове, които имплементират интерфейси, които може да сериализирате.
Някои справочни връзки:Високо до ниско ниво преглед на C# MongoDB сериализация , пост SO който очертава решението.