Některé pojmy

Reflexe

SSŠVT


Některé pojmy důležité pro pochopení reflexe

Vzhledem k tomu, že reflexe je koncept do značné míry systémově orientovaný a abstraktní, je dobré si připomenout některé základní pojmy týkající se .NETu.

Když necháme přeložit (compile) a sestavit (build) nějaký náš dotnetový projekt, vznikne assembly (sestavení). Zjednodušeně řečeno – z několika našich zdrojových souborů v C# (*.cs) vznikne spustitelný soubor (*.exe).

Aplikační doména (application domain) je logické oddělení řízeného kódu (managed code) jedné dotnetové aplikace od jiné. Týká se bezpečnosti, spolehlivosti a verzování. Tak jako v operačním systému od sebe oddělujeme běžící programy pomocí procesů, podobně v .NETu mohou být dvě běžící aplikace od sebe oddělené hranicí aplikačních domén, přičemž mohou obě běžet (být hostované) v jediném procesu. Aplikační doména (podobně jako proces v operačním systému) zajistí, že jiné aplikace nemohou ovlivnit běh mé aplikace, která je ohraničena touto doménou. Nemají přímý přístup k mým objektům, nemohou přímo adresovat paměť vyhrazenou mé aplikaci a podobně.

Výhoda oddělení aplikací aplikačními doménami se projeví např. v tom, že když jedna z aplikací selže a je runtimem .NETu ukončena, ostatní aplikace běžící ve stejném hostitelském procesu to nijak neovlivní. Mohou běžet bez problému dál.

Termín typ (datový typ, někdy též třída) označuje v .NETu cokoliv, co pro proměnnou daného typu může určit, jaká data lze v této proměnné uchovávat. Typ v .NETu není pouze třída (class, referenční typ), nýbrž také hodnotový typ (struct), výčtový typ (enum), rozhraní (interface), abstraktní třída, primitivní typ (built-in type jako int, double, decimal, string) apod.

Každému datovému typu odpovídá v reflexi objekt třídy Type, přičemž pro každý datový typ existuje v rámci aplikační domény právě jeden takový objekt.

Poznámka:
Místo termínu typ se v běžné mluvě často používá nesprávně termín třída, kterým však míníme právě jakýkoliv datový typ, tedy nikoliv pouze podkategorii referenčních typů.