De beste optie zou hier waarschijnlijk bij passen:
monto = document["monto"].ToDecimal();
De reden waarom dit zo goed werkt, is dat de abstracte BsonValue
type implementeert een methode die er als volgt uitziet:
public virtual decimal ToDecimal()
De concrete implementaties van BsonValue
(bijv. BsonInt32
, BsonInt64
, BsonDouble
etc.) overschrijf dit lid met de onderstaande methode die je precies geeft wat je wilt, ongeacht of de driver een int, een long of een double deserialiseert uit een opgeslagen document:
public override decimal ToDecimal()
{
return (decimal)_value;
}
Als alternatief, in uw specifieke geval (en als alle documenten in het toepassingsgebied een int hebben die is opgeslagen in hun "monto"-veld), kunt u gewoon schrijven:
monto = Convert.ToDecimal(document["monto"].AsInt32)
of zelfs gewoon
monto = (decimal)(document["monto"].AsInt32)
die semantisch identiek zijn.