Det bästa alternativet skulle förmodligen gå med detta:
monto = document["monto"].ToDecimal();
Anledningen till att detta fungerar så bra är att det abstrakta BsonValue
type implementerar en metod som ser ut så här:
public virtual decimal ToDecimal()
De konkreta implementeringarna av BsonValue
(t.ex. BsonInt32
, BsonInt64
, BsonDouble
etc.) åsidosätt denna medlem med metoden nedan som ger dig exakt vad du vill ha, oavsett om föraren deserialiserar en int, en long eller en dubbel från ett lagrat dokument:
public override decimal ToDecimal()
{
return (decimal)_value;
}
Alternativt, i ditt specifika fall (och om alla dokument i omfattning har en int lagrad i deras "monto"-fält) kan du helt enkelt skriva:
monto = Convert.ToDecimal(document["monto"].AsInt32)
eller till och med bara
monto = (decimal)(document["monto"].AsInt32)
som är semantiskt identiska.