Pasibaigus abiems Lietuvos .NET vartotojų grupės susitikimams ir atšventęs savo gimtadienį, vėl galima grįžti prie naujų C# 4.0 galimybių apžvalgos. Šį kartą, kaip ir žadėjau, užbaigsiu pasakojimą apie C# dinaminius objektus.




Šiame pavyzdyje aš aprašysiu paprasčiausią dinaminį objektą, kuriam galima apibrėžti jo savybes. Norėdami aprašyti savo dinaminį objektą C# 4.0 - pirmiausia reikia paveldėti iš DynamicObject objekto, kuris priklauso System.Dynamic vardų sričiai (jeigu norėsite išbandyti šį pavyzdį su pirma Visual Studio 2010 CTP versija, reikės papildomai parsisiųsti šią klasę). Paprastumo dėlei, visas savybes ir jų reikšmes aš saugosiu tiesiog Dictionary tipo objekte:



Atkreipkite dėmesį, kad norėdamas įtakoti savybių reikšmių gavimą bei priskirimą, aš perrašiau du DynamicObject metodus: GetMember ir SetMember. Tai reiškia, kad bandant mūsų DemoObject bet kuriai savybei priskirti reikšmę ar ją gauti, bus kviečiama aprašytoji logika. Esant reikalui, mes galėtume net įtakoti metodų aprašus bei kvietinius perrašant metodus Invoke ir InvokeMember. Paskutinė pastaba – kadangi dinaminis objektas irgi yra Object tipo, tai mes galime perrašyti standartinį ToString() metodą. Mūsų atveju, ToString() atspausdins visas objekto savybes ir jų reiškmes.




Aprašytos klasės panaudojimas galėtų atrodyti taip:



Pirma mes sukuriame dinaminį DemoObject objektą (raktažodis dynamic šiuo atveju yra būtinas), o vėliau aprašome reikalingas savybes. WriteLine metodas šiuo atveju atspausdins tokią informaciją:



Kas įdomiausia, toks dinaminis C# objektas gali būti tiesiogiai panaudotas iš dinaminių kalbų! Bet dar kartą noriu priminti, dinaminius objektus reikia naudoti tik ten, kur jų tikrai reikia…

Rodyk draugams