18 Mayıs 2016 Çarşamba

ExpandoObject Sınıfı

Giriş
dynamic ve ExpandoObject sıklıkla beraber kullanılırlar.

Constructor
Şöyle yaparız.
dynamic obj = new ExpandoObject();
Şöyle yaparız.
IDictionary<string, object> obj = new ExpandoObject();
Şöyle yaparız.
dynamic obj = new ExpandoObject() as IDictionary<string, Object>;
Kodlarken Alan Eklemek
Kodlarken yeni alanlar eklemek mümkün. Şöyle yaparız.
dynamic obj = new ExpandoObject();
obj.MyInt = 3;
obj.MyString = "Foo";
Daha sonra o alana Property gibi erişilebilir.
var val = obj.MyInt;
Add metodu - Çalışma Sırasında Alan Eklemek
Key olarak string, Value olarak bir object veririr. Eğer nesnemiz IDictionary tipinde değilse cast ederek şöyle yaparız.
dynamic obj = new ExpandoObject();
((IDictionary<string, object>)obj).Add(...,...);
Eğer IDictionary tipindeyse şöyle yaparız.
dynamic obj = new ExpandoObject() as IDictionary<string, Object>;
obj.Add(...,...);
Bir listeyi dolaşarak tüm elemanları alan olarak eklemek için şöyle yaparız.
var list = new List<string>() { "str1", "str2" };
ExpandoObject obj = new ExpandoObject();
var store = (IDictionary<string, object>)obj;

list.ForEach(x => store.Add(x, x));

dynamic lst  = obj;
var val = lst.str1; // Test
[] operator - Çalışma Sırasında Alan Eklemek
Add metodu ile aynıdır. Şöyle yaparız.
string[] items = ...;
IDictionary<string, object> result = new ExpandoObject();
result[items[0]] = items[1];


Hiç yorum yok:

Yorum Gönder