Cikkek áttekintése a reflexiókról:
Az EMIT Review-ról:
Először hozz létre egy egyszerű objektumot, instanciáljuk az objektumot, és használd az emit és expression segítségével olvassuk és módosítsuk az objektum értékét, és láthatod, hogy a végrehajtási eredmény a várt, ahogy az alábbi ábrán is látható:
Benchmark Benchmark Benchmark segítségével BenchmarkDotNet segítségével tesztel, csak objektumértékeket olvas teszteléshez, Net472 és NetCoreApp31 rendszeren fut, a teszteredmények a következők:
Összefoglalás:
Mind az emit, mind az expression hatékonyabb, mint a visszaverődés segítségével értékeket szerezni, és a .NET 4.7.2 keretrendszerben az emit jobb az expression végrehajtási hatékonysága, míg a .NET Core 3.1 keretrendszerben az expression jobb, mint az emit végrehajtás.
Ha a programodnak csak egyszer kell dinamikusan végrehajtania egy objektumot, akkor ajánlott a reflektívát használni (hiszen nincs szükség újra kapszulázásra vagy delegált létrehozására), és ha a programodnak többször is dinamikusan kell végrehajtania egy objektumot, akkor ajánlott az emit vagy expression használatát, és természetesen további kapszulázás szükséges.
A tesztkód a következő:
Amikor az Expression-t használjuk objektumértékek megszerzésére, a hibát a következőképpen jelentjük:
A 'System.Int32' típusú kifejezés nem használható a 'System.Object' visszatérő típushoz Tényleg nem tudom, hogy ezek az emberek hogyan használják, csak másolni és beilleszteni tudnak!
|