🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #22477

Konwersja

#22477
From: mk
Date: Thu, 25 Apr 2013 08:54
49 lines
2901 bytes
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
Technical Details
Message-ID: <5178ef40$0$26696$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!nf1.ipartners.pl!ipartners.pl!news.internetia.pl!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!nf1.ipartners.pl!ipartners.pl!news.internetia.pl!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Date: Thu, 25 Apr 2013 10:54:23 +0200
From: mk <mk@nospam.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130328 Thunderbird/17.0.5
MIME-Version: 1.0
Newsgroups: alt.pl.comp.lang.csharp
Subject: Konwersja
Lines: 49
Message-ID: <5178ef40$0$26696$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 79.189.213.122
X-Trace: 1366880064 unt-rea-a-01.news.neostrada.pl 26696 79.189.213.122:61938
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit