Nejlepší možností by pravděpodobně bylo toto:
monto = document["monto"].ToDecimal();
Důvodem, proč to tak dobře funguje, je abstraktní BsonValue
type implementuje metodu, která vypadá takto:
public virtual decimal ToDecimal()
Konkrétní implementace BsonValue
(např. BsonInt32
, BsonInt64
, BsonDouble
atd.) přepište tento člen níže uvedenou metodou, která vám dá přesně to, co chcete, bez ohledu na to, zda ovladač deserializuje int, long nebo double z uloženého dokumentu:
public override decimal ToDecimal()
{
return (decimal)_value;
}
Případně ve vašem konkrétním případě (a pokud všechny dokumenty v rozsahu mají v poli „monto“ uloženo int) můžete jednoduše napsat:
monto = Convert.ToDecimal(document["monto"].AsInt32)
nebo dokonce jen
monto = (decimal)(document["monto"].AsInt32)
které jsou sémanticky totožné.