次のコードがあります。MiscellaneousData で抽象的な MiscellaneousDataBase をオーバーライドする必要があります。ただし、IdMemberMap は常に null になります。
スタンドアロンの「通常の」クラスを使用すると機能します。
if (!BsonClassMap.IsClassMapRegistered(typeof(MiscellaneousData)))
{
BsonClassMap.RegisterClassMap<MiscellaneousData>(cm =>
{
cm.AutoMap();
cm.SetIdMember(cm.GetMemberMap(c => c.Key));
cm.IdMemberMap.SetIdGenerator(StringObjectIdGenerator.Instance);
});
}
以下は、さまざまなデータとそのベースです。わかりやすくするために縮小しています。
public abstract class MiscellaneousDataBase
{
[XmlIgnore]
public abstract string Key { get; set; }
}
public class MiscellaneousData : MiscellaneousDataBase
{
public override string Key { get; set; }
}