दिलचस्प पोस्ट
जावास्क्रिप्ट में एक परिभाषित चर की जांच कैसे करें "अभिव्यक्ति SFINAE" क्या है? नकली, मजाक और बदमाश के बीच क्या अंतर है? एंड्रॉइड डायलर आवेदन गिट और ड्रॉपबॉक्स का प्रयोग एक साथ प्रभावी रूप से? हटाने और "अधिक" बटन पर स्वाइप करें (जैसे IOS 7 पर मेल ऐप में) कैसे git में कुछ फ़ाइलों को नजरअंदाज करने के लिए? लॉलीपॉप की पृष्ठभूमि का एक बटन पर कोई प्रभाव नहीं है जावा स्विंग JComponent "size" क्या सी # वर्ग अपने इंटरफेस से गुण प्राप्त कर सकता है? अपाचे के साथ वेबसाइट छवि कैशिंग Https.request के साथ node.js में अमान्य स्वयं-हस्ताक्षरित एसएसएल प्रमाणपत्र पर ध्यान न दें? PHP का उपयोग कर फ़ाइल डाउनलोड करने पर मजबूर होना स्मृति से बाहर Image.FromFile Angularjs: इनपुट ngChange आग, जबकि मूल्य बदल रहा है

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

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

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

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

वेब के समाधान से एकत्रित समाधान "गतिशील रूप से एक 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");