दुर्भाग्य से, सी # ड्राइवर स्रोत कोड (और जावा स्रोत कोड यह देखने के लिए कि यह क्या कर रहा था) के माध्यम से थोड़ा गहरा खोदने के बाद, वास्तविक सर्वर पता जो कि लाने के हिस्से के रूप में उपयोग किया गया था, एक निजी सदस्य के रूप में एन्यूमरेटर में छिपा हुआ है (_serverInstance
)।
विशेष रूप से, यह MongoCursorEnumerator
नामक एक वर्ग में छिपा हुआ है . दुर्भाग्य से, इसे प्राप्त करने का कोई "ईमानदार" तरीका नहीं है। आप .NET प्रतिबिंब का उपयोग कर सकते हैं मुझे लगता है कि इसे प्राप्त करने के लिए, लेकिन यह आमतौर पर एक अच्छा विचार नहीं है, खासकर उस कोड के साथ जो आपके पास नहीं है। यदि आप ड्राइवर का एक कस्टम कांटा चाहते हैं, तो आप इसे आसानी से एक नई संपत्ति के रूप में जोड़ सकते हैं। हो सकता है कि आप यहां
कोई समस्या जोड़ना चाहें ।
सामान्य तौर पर, आप MongoDB कनेक्शन द्वारा उपयोग किए गए उदाहरण प्राप्त कर सकते हैं, क्योंकि वे MongoServerInstance
पर उपलब्ध हैं। वर्ग, Address
संपत्ति।
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
हालांकि, आपके मामले में आप इसे cursor
. से भी प्राप्त कर सकते हैं Server
. के माध्यम से संपत्ति:
cursor.Server.Instance.Address.Host
या
cursor.Server.Instances[]
एक से अधिक इंस्टेंस उपलब्ध होने पर सी # ड्राइवर दिलचस्प रूप से फेंकता है और अपवाद करता है। इसलिए, यदि आप नहीं जानते कि कितने उदाहरण हैं, तो आपको या तो exception
को संभालने की आवश्यकता है (InvalidOperationException
), या हमेशा Instances[]
. का उपयोग करें संबंधित उदाहरणों को वापस करने के लिए संपत्ति।