दिलचस्प पोस्ट
पाइप ऑपरेटर का उपयोग करते समय सशर्त मूल्यांकन>%> पायथन: अगर वर्ड में डिक्ट वर्क्स की कोशिश करें / को छोड़कर कस्टम फ़ॉन्ट के साथ Spannable ऑब्जेक्ट फ़ॉन्ट कैसे सेट करें सरणी से ArrayList बनाएँ मैं SQL सर्वर में एक ही बोली से कैसे बचूं? हम क्यों पीस स्क्रिप्ट में sys.setdefaultencoding ("utf-8") का उपयोग नहीं करना चाहिए? POM.xml में गुणों के रूप में मेवेन से कमांड लाइन तर्क पास करना समझना । ईश (&: my_method) नियमित अभिव्यक्ति \ p {L} और \ p {N} उद्देश्य- सी वर्तमान यूटीसी को NSDate की स्थापना तिथि प्रारूप रूपांतरण एंड्रॉइड मैं विंडोज़ में बाल प्रक्रियाओं को स्वचालित रूप से कैसे नष्ट कर सकता हूं? आपको स्क्रिप्ट नाम से पहले बाश में चलाने की आवश्यकता क्यों है? / (डॉट-स्लैश) उद्देश्य सी में "->" क्या है? जावास्क्रिप्ट नोडलिस्ट

गतिशील रूप से एक ExpandoObject में गुण जोड़ना

मैं गतिशील रूप से गुणों को क्रमशः पर एक ExpandoObject में जोड़ना चाहूंगा उदाहरण के लिए, स्ट्रिंग गुण कॉल को जोड़ने के लिए, NewProp मैं कुछ ऐसा लिखना चाहूंगा

var x = new ExpandoObject(); x.AddProperty("NewProp", System.String); 

क्या यह आसानी से संभव है?

Solutions Collecting From Web of "गतिशील रूप से एक ExpandoObject में गुण जोड़ना"

 dynamic x = new ExpandoObject(); x.NewProp = string.Empty; 

वैकल्पिक रूप से:

 var x = new ExpandoObject() as IDictionary<string, Object>; x.Add("NewProp", string.Empty); 

जैसा कि फ़िलिप द्वारा समझाया गया – http://www.filipekberg.se/2011/10/02/adding-properties-and-methods-to-an-expandoobject-dynamicly/

आप रनटाइम पर भी विधि जोड़ सकते हैं

 x.Add("Shout", new Action(() => { Console.WriteLine("Hellooo!!!"); })); x.Shout(); 

यहां एक नमूना सहायक वर्ग है जो ऑब्जेक्ट को परिवर्तित करता है और दिए गए ऑब्जेक्ट के सभी सार्वजनिक गुणों के साथ एक एक्सपेंशन देता है।

 public static class dynamicHelper { public static ExpandoObject convertToExpando(object obj) { //Get Properties Using Reflections BindingFlags flags = BindingFlags.Public | BindingFlags.Instance; PropertyInfo[] properties = obj.GetType().GetProperties(flags); //Add Them to a new Expando ExpandoObject expando = new ExpandoObject(); foreach (PropertyInfo property in properties) { AddProperty(expando, property.Name, property.GetValue(obj)); } return expando; } public static void AddProperty(ExpandoObject expando, string propertyName, object propertyValue) { //Take use of the IDictionary implementation var expandoDict = expando as IDictionary; if (expandoDict.ContainsKey(propertyName)) expandoDict[propertyName] = propertyValue; else expandoDict.Add(propertyName, propertyValue); } } 

उपयोग:

 //Create Dynamic Object dynamic expandoObj= dynamicHelper.convertToExpando(myObject); //Add Custom Properties dynamicHelper.AddProperty(expandoObj, "dynamicKey", "Some Value");