public override object Deserialize(
BsonReader bsonReader,
Type nominalType,
IBsonSerializationOptions options)
{
if (!nominalType.IsInterface)
{
var message = string.Format("Nominal type must be an interface, not {0}.", nominalType.FullName);
throw new ArgumentException(message, "nominalType");
}
var discriminatorConvention = BsonSerializer.LookupDiscriminatorConvention(nominalType);
var actualType = discriminatorConvention.GetActualType(bsonReader, nominalType);
return Deserialize(bsonReader, nominalType, actualType, options);
}