Straipsnių apie atspindžius apžvalga:
Apie EMIT apžvalgą:
Pirmiausia sukurkite paprastą objektą, sukurkite objektą ir naudokite emit ir išraišką, kad perskaitytumėte ir modifikuotumėte objekto reikšmę, ir pamatysite, kad vykdymo rezultatas yra toks, kokio tikėtasi, kaip parodyta paveikslėlyje žemiau:
Lyginamoji analizė naudojant BenchmarkDotNet lyginamajai analizei, skaitant tik objektų reikšmes testavimui, veikiant Net472 ir NetCoreApp31, testo rezultatai yra tokie:
Suvestinė:
Tiek emitavimas, tiek išraiška yra efektyvesni nei atspindžio naudojimas reikšmėms gauti, o .NET 4.7.2 sistemoje emisija yra geresnė nei išraiškos vykdymo efektyvumas, tačiau .NET Core 3.1 sistemoje išraiška yra geresnė nei vykdymas.
Jei jūsų programai reikia dinamiškai vykdyti objektą tik vieną kartą, rekomenduojama naudoti atspindį (juk nereikia dar kartą inkapsuliuoti ar kurti atstovo), o jei jūsų programai reikia dinamiškai vykdyti objektą kelis kartus, rekomenduojama naudoti emit arba išraišką, ir, žinoma, reikalingas tolesnis inkapsuliavimas.
Bandymo kodas yra toks:
Naudojant išraišką objekto reikšmėms gauti, klaida bus pranešta taip:
System.Int32 tipo išraiška negali būti naudojama grąžinimo tipui System.Object Aš tikrai nežinau, kaip šie žmonės jį naudoja, jie tik žino, kaip kopijuoti ir įklijuoti!
|