Pilihan terbaik mungkin dengan ini:
monto = document["monto"].ToDecimal();
Alasan mengapa ini bekerja dengan sangat baik adalah karena BsonValue
abstrak type mengimplementasikan metode yang terlihat seperti ini:
public virtual decimal ToDecimal()
Implementasi konkret BsonValue
(mis. BsonInt32
, BsonInt64
, BsonDouble
dll.) timpa anggota ini dengan metode di bawah ini yang memberi Anda persis apa yang Anda inginkan, tidak peduli apakah driver menghapus serial int, long atau double dari dokumen yang disimpan:
public override decimal ToDecimal()
{
return (decimal)_value;
}
Atau, dalam kasus khusus Anda (dan jika semua dokumen dalam cakupan memiliki int yang disimpan di bidang "monto"), Anda cukup menulis:
monto = Convert.ToDecimal(document["monto"].AsInt32)
atau bahkan hanya
monto = (decimal)(document["monto"].AsInt32)
yang secara semantik identik.