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投稿 ソリューションの概要を説明します。