Den bedste mulighed ville sandsynligvis gå med denne:
monto = document["monto"].ToDecimal();
Grunden til at dette fungerer så godt er, at den abstrakte BsonValue
type implementerer en metode, der ser sådan ud:
public virtual decimal ToDecimal()
De konkrete implementeringer af BsonValue
(f.eks. BsonInt32
, BsonInt64
, BsonDouble
osv.) tilsidesætter dette medlem med nedenstående metode, som giver dig præcis, hvad du ønsker, uanset om driveren deserialiserer en int, en long eller en double fra et lagret dokument:
public override decimal ToDecimal()
{
return (decimal)_value;
}
Alternativt kan du i dit specifikke tilfælde (og hvis alle dokumenter i omfang har en int gemt i deres "monto"-felt) blot skrive:
monto = Convert.ToDecimal(document["monto"].AsInt32)
eller endda bare
monto = (decimal)(document["monto"].AsInt32)
som er semantisk identiske.