में सदस्यों को जोड़ना मैं सदस्यों को गतिशील रूप से गतिशील वस्तु में जोड़ने का एक तरीका ढूंढ रहा हूं। ठीक है, मुझे लगता है कि एक छोटे से स्पष्टीकरण की जरूरत है ...गतिशील रूप से गतिशील वस्तु
आपको लगता है कि जब कार्य करें:
dynamic foo = new ExpandoObject();
foo.Bar = 42;
Bar
संपत्ति कार्यावधि में गतिशील रूप से जोड़ दिया जाएगा। लेकिन कोड अभी भी बार में "स्थैतिक रूप से" संदर्भित करता है (नाम "बार" हार्ड-कोड किया गया है) ... यदि मैं संकलन समय पर अपना नाम जानने के बिना रनटाइम पर एक संपत्ति जोड़ना चाहता हूं तो क्या होगा?
मैं कैसे एक कस्टम गतिशील वस्तु (मैं वास्तव में blogged about it कुछ महीने पहले) के साथ ऐसा करना, DynamicObject
वर्ग के तरीकों का उपयोग कर पता है, लेकिन मैं इसे कैसे किसी भी गतिशील वस्तु के साथ कर सकते हैं?
मैं शायद IDynamicMetaObjectProvider
इंटरफ़ेस का उपयोग कर सकता हूं, लेकिन मुझे समझ में नहीं आता कि इसका उपयोग कैसे किया जाए। उदाहरण के लिए, मुझे GetMetaObject
विधि में किस तर्क को पास करना चाहिए? (यह Expression
की अपेक्षा करता है)
और वैसे, आप गतिशील वस्तुओं पर प्रतिबिंब कैसे करते हैं? "नियमित" प्रतिबिंब और TypeDescriptor
गतिशील सदस्यों को नहीं दिखाते हैं ...
किसी भी अंतर्दृष्टि की सराहना की जाएगी!
सी # 6.0 में, * हो सकता है * आप इसे 'foo। $ Bar = 42;' जैसे लिख सकते हैं। :) सुनिश्चित नहीं है कि यह गतिशील के लिए अनुमति है ... – nawfal
@nawfal, वास्तव में, यह सुविधा गिरा दी गई है .. लेकिन वैसे भी, 'foo। $ bar'' foo ["bar"] ' –
थॉमस के लिए सिर्फ लघुरूप है, इसे छोड़ने की सुविधा के बारे में नहीं पता था (मुझे इसके बारे में खुशी है), लेकिन ओह हाँ, एक पल के लिए मैंने आपके क्यू की वास्तविक आवश्यकता को नजरअंदाज कर दिया। – nawfal