Способ работы карт классов в иерархии наследования заключается в том, что вы регистрируете карту классов для каждого класса в иерархии, и каждая карта классов определяет только свойства, присутствующие в этом классе.Итак, вы хотите зарегистрировать все три класса следующим образом:
BsonClassMap.RegisterClassMap<A>(map =>
{
map.MapProperty(a => a.FirstName).SetElementName("fn");
});
BsonClassMap.RegisterClassMap<B>(map =>
{
map.MapProperty(b => b.LastName).SetElementName("ln");
});
BsonClassMap.RegisterClassMap<C>(map =>
{
map.MapProperty(c => c.Age).SetElementName("age");
});
Вы можете быстро протестировать его с помощью следующего кода:
var document = new C { FirstName = "John", LastName = "Doe", Age = 33 };
Console.WriteLine(document.ToJson());
, который выдает:
{ "fn" : "John", "ln" : "Doe", "age" : 33 }
Или вы можете использовать атрибуты для аннотирования ваших классов, что часто намного проще, но требует создания зависимости от драйвера C # в ваших классах модели данных.