सबसे अच्छा विकल्प शायद इसके साथ जाना होगा:
monto = document["monto"].ToDecimal();
यह इतनी अच्छी तरह से काम करने का कारण यह है कि सार BsonValue
type ऐसी विधि लागू करता है जो इस तरह दिखती है:
public virtual decimal ToDecimal()
BsonValue
. का ठोस क्रियान्वयन (उदा. BsonInt32
, BsonInt64
, BsonDouble
आदि) इस सदस्य को नीचे दी गई विधि से ओवरराइड करें जो आपको ठीक वही देता है जो आप चाहते हैं, भले ही ड्राइवर किसी संग्रहीत दस्तावेज़ से एक int, एक लंबा या डबल deserializes:
public override decimal ToDecimal()
{
return (decimal)_value;
}
वैकल्पिक रूप से, आपके विशिष्ट मामले में (और यदि दायरे के सभी दस्तावेज़ों में उनके "मोंटो" फ़ील्ड में एक int संग्रहीत है) तो आप बस लिख सकते हैं:
monto = Convert.ToDecimal(document["monto"].AsInt32)
या यहां तक कि बस
monto = (decimal)(document["monto"].AsInt32)
जो शब्दार्थ समान हैं।