2010-10-26 20 views
37

मैं एक अनाम प्रकार बनाना चाहता हूं जिसे मैं संपत्ति नाम गतिशील रूप से सेट कर सकता हूं। यह एक अनाम प्रकार होना आवश्यक नहीं है। मैं जो हासिल करना चाहता हूं वह गतिशील रूप से किसी भी वस्तु संपत्ति नाम सेट कर रहा है। यह ExpandoObject आदि हो सकता है लेकिन शब्दकोश मेरे लिए काम नहीं करेगा। आपके सुझाव क्या हैं? बहुत बहुत धन्यवादगतिशील रूप से अनाम प्रकार बनाना?

+0

कोई शब्दकोश आपके लिए काम क्यों नहीं करता है? – dtb

+2

क्योंकि मुझे इसे टेलरिक ग्रिड के डेटासोर्स से बांधना है और मैं गतिशील रूप से ग्रिड के कॉलम जोड़ता हूं। – ward87

उत्तर

41

केवल ExpandoObject गतिशील गुण हो सकते हैं।

संपादित:

dynamic sampleObject = new ExpandoObject(); 
sampleObject.TestProperty = "Dynamic Property"; // Setting dynamic property. 
Console.WriteLine(sampleObject.TestProperty); 
Console.WriteLine(sampleObject.TestProperty .GetType()); 
// This code example produces the following output: 
// Dynamic Property 
// System.String 

dynamic test = new ExpandoObject(); 
((IDictionary<string, object>)test).Add("DynamicProperty", 5); 
Console.WriteLine(test.DynamicProperty); 
+0

हाँ मुझे इसके बारे में पता है। लेकिन क्या मैं उदाहरण के लिए स्ट्रिंग सरणी से ExpandoObjects प्रॉपर्टी सेट कर सकता हूं? – ward87

+5

... अच्छा, या किसी अन्य प्रकार को 'IDynamicMetaObjectProvider' लागू करना। –

+3

ExpandoObject लागू 'IDictionary ', तो हाँ, आप इसे पॉप्युलेट करने के लिए इसे एक शब्दकोश के रूप में देख सकते हैं। – stevemegson

29

आप कुंजी आप करेंगे सेट है कि एक शब्दकोश में ExpandoObject डाली सकता है और यह पॉप्युलेट कि जिस तरह से है, तो: यहाँ Expand Object उपयोग का एक उदाहरण (अपनी MSDN वर्णन से) है ExpandoObject पर संपत्ति के नाम के रूप में दिखाई दें ...

dynamic data = new ExpandoObject(); 

IDictionary<string, object> dictionary = (IDictionary<string, object>)data; 
dictionary.Add("FirstName", "Bob"); 
dictionary.Add("LastName", "Smith"); 

Console.WriteLine(data.FirstName + " " + data.LastName); 
+0

+1 यह बहुत जंगली है और मुझे नहीं पता था कि गतिशीलता में यह क्षमता थी। अन्य भाषाओं में समान क्षमताएं हैं, और इसमें निश्चित रूप से कुछ महान उपयोग के मामले होंगे। दूसरी ओर, यह भी बहुत ही दुर्व्यवहार किया जा सकता है, और उचित सम्मान के साथ इस्तेमाल किया जाना चाहिए। – AaronLS

संबंधित मुद्दे