Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Konwersja

6 views
Skip to first unread message

mk

unread,
Apr 25, 2013, 4:54:23 AM4/25/13
to
Witam,

Mam następującą kolekcję:

Dictionary<string, object> dict = new Dictionary<string, object>();

dict.add("root.test.1.value.one", 10);
dict.add("root.test.1.value.two", 1);
dict.add("root.test.1.value.three", 2);
dict.add("root.test.1.value.four", 3);
dict.add("root.test.2.value.one", 4);
dict.add("root.test.2.value.two", 5);
dict.add("root.test.2.value.three", 6);
dict.add("root.test.2.value.four", 7);
dict.add("root.value.one", 8);
dict.add("root.value.two", 11);
dict.add("root.value.three", 22);
dict.add("root.value.four", 33);
dict.add("root.data.1.object.amount", 78);
dict.add("root.data.1.object.vat", 22);
dict.add("root.data.2.object.amount", 34);
dict.add("root.data.2.object.vat", 234);
dict.add("root.data.3.object.amount", 23423);
dict.add("root.data.3.object.vat", 2341);

Jak powyżej widać klucz to struktura drzewiasta.
Teraz chciałbym napisać jakąś metodę, która przerobi mi powyższą
kolekcję na objekt w taki sposób żebym mógł odwoływać się do niego w
następujący sposób:


MyNewObject = SomeMagicMethod(dict);

Console.WriteLine(MyNewObject.root.test[1].value.one); //print 10
Console.WriteLine(MyNewObject.root.test[1].value.two); //print 1
Console.WriteLine(MyNewObject.root.test[2].value.three); //print 6
Console.WriteLine(MyNewObject.root.test[2].value.four); //print 7
Console.WriteLine(MyNewObject.root.value.one); //print 8
Console.WriteLine(MyNewObject.root.data[1].object.amount); //print 78
Console.WriteLine(MyNewObject.root.data[1].object.vat); //print 22
Console.WriteLine(MyNewObject.root.data[2].object.amount); //print 34

Teraz zastanawiam się jak najlepiej/najprościej napisać tą metodę:
SomeMagicMethod ? Może mi coś podpowiecie? Myślę że typy dynamiczne by
się tu przydały ale jeszcze z tego nie korzystałem. Jakiś toporny sposób
na pewno znajdę ale mam nadzieje że da się to zrobić jakoś lepiej.

Pozdrawiam
Mariusz
0 new messages