2011-12-03 17 views
11

ben buDinamik bir nesneye dinamik olarak özellikler ekliyor mu?

dynamic d = new ExpandoObject(); 
d.Name = attribute.QualifiedName.Name; 

yüzden, ben d bir özellik Adı sahip olduğunu biliyoruz var. Şimdi derleme zamanında mülkün adını bilmiyorum, bu özelliği dinamik olarak nasıl eklerim. Bu SO Question

'u buldum, bu yüzden, bu bağlayıcı kavramlar, vb.

+0

[üzere (tasarım zamanında) özelliklerini bilinmeyen ekleme olası yinelenen Bir ExpandoObject] (http://stackoverflow.com/questions/2974008/adding-unknown-at-design-time-properties-to-an-expandoobject) – nawfal

cevap

23
dynamic d = new ExpandoObject(); 
((IDictionary<string,object>)d)["test"] = 1; 
//now you have d.test = 1 
4

Ayrıca böyle yapabilirsiniz: -

İşte
Dictionary<string,object> coll = new Dictionary<string,object>(); 
    coll.Add("Prop1","hello"); 
    coll.Add("Prop2",1); 
    System.Dynamic.ExpandoObject obj = dic.Expando(); 

//You can have this ext method to better help 

public static ExpandoObject Expando(this IEnumerable<KeyValuePair<string, object>> 
dictionary) 
     { 
      var expando = new ExpandoObject(); 
      var expandoDic = (IDictionary<string, object>)expando; 
      foreach (var item in dictionary) 
      { 
       expandoDic.Add(item); 
      } 
      return expando; 
     } 
+0

iyi yol ... çok daha temiz .. –

5

bir temizleyici yol

var myObject = new ExpandoObject() as IDictionary<string, Object>; myObject.Add("Country", "Ireland");