Reflexe ion v .NET

Třídy v System.Reflection oboru názvů společně s System.Type, umožňují získat informace o načtených sestaveních a typy definované v nich, jako jsou třídy, rozhraní a hodnotové typy (to znamená struktury a výčty). Reflexi můžete také použít k vytvoření instancí typů za běhu a k jejich vyvolání a přístupu.

Sestavení obsahují moduly , moduly obsahují typy a typy členy. Reflexe ion poskytuje objekty, které zapouzdřují sestavení, moduly a typy. Reflexi můžete použít k dynamickému vytvoření instance typu, vytvoření vazby typu k existujícímu objektu nebo získání typu z existujícího objektu. Pak můžete vyvolat metody typu nebo získat přístup k jeho polím a vlastnostem. Mezi typické způsoby reflexe patří:

  • Slouží Assembly k definování a načítání sestavení, načtení modulů uvedených v manifestu sestavení a vyhledání typu z tohoto sestavení a vytvoření instance.
  • Slouží Module ke zjišťování informací, jako je sestavení, které obsahuje modul a třídy v modulu. Můžete také získat všechny globální metody nebo jiné specifické, ne-globální metody definované v modulu.
  • Slouží ConstructorInfo ke zjišťování informací, jako je název, parametry, modifikátory přístupu (například public nebo private) a podrobnosti implementace (například abstract nebo virtual) konstruktoru. GetConstructors K vyvolání konkrétního konstruktoru Type použijte metodu nebo GetConstructor metodu.
  • Slouží MethodInfo ke zjišťování informací, jako je název, návratový typ, parametry, modifikátory přístupu a podrobnosti implementace (například abstract nebo virtual) metody. GetMethods K vyvolání konkrétní metody použijte metodu nebo GetMethod metoduType.
  • Slouží FieldInfo ke zjišťování informací, jako je název, modifikátory přístupu a podrobnosti implementace (například static) pole, a k získání nebo nastavení hodnot polí.
  • Slouží EventInfo ke zjišťování informací, jako je název, datový typ obslužné rutiny událostí, vlastní atributy, deklarování typu a reflektovaný typ události a přidání nebo odebrání obslužných rutin událostí.
  • Slouží PropertyInfo ke zjišťování informací, jako je název, datový typ, deklarování typu, reflektovaný typ a stav jen pro čtení nebo zapisovatelný stav vlastnosti, a k získání nebo nastavení hodnot vlastností.
  • Slouží ParameterInfo ke zjišťování informací, jako je název parametru, datový typ, zda je parametr vstupním nebo výstupním parametrem, a umístění parametru v podpisu metody.
  • Slouží CustomAttributeData ke zjišťování informací o vlastních atributech při práci v MetadataLoadContext kontextu jen pro reflexi (.NET Framework). CustomAttributeData umožňuje zkoumat atributy bez vytváření instancí z nich.

Třídy System.Reflection.Emit oboru názvů poskytují specializovanou formu reflexe, která umožňuje vytvářet typy za běhu.

Reflexe ion lze také použít k vytvoření typů prohlížečů, které uživatelům umožňují vybrat typy a pak zobrazit informace o těchto typech.

Existují další použití k reflexi. Kompilátory pro jazyky, jako je JScript, používají reflexi k vytváření tabulek symbolů. Třídy v System.Runtime.Serialization oboru názvů používají reflexi pro přístup k datům a k určení polí, která mají být zachována. Třídy v System.Runtime.Remoting oboru názvů používají reflexi nepřímo prostřednictvím serializace.

Typy modulu runtime v reflexi

Reflexe ion poskytuje třídy, jako Type jsou a MethodInfo, představují typy, členy, parametry a další entity kódu. Pokud ale použijete reflexi, nebudete s těmito třídami pracovat přímo, z nichž většina je abstraktní (MustInherit v jazyce Visual Basic). Místo toho pracujete s typy poskytovanými modulem CLR (Common Language Runtime).

Pokud například k získání Type objektu použijete operátor jazyka C# typeof (GetTypev jazyce Visual Basic), je objekt skutečně objektem RuntimeType. RuntimeType odvozuje a Type poskytuje implementace všech abstraktních metod.

Tyto třídy modulu runtime jsou internal (Friend v jazyce Visual Basic). Nejsou zdokumentované odděleně od jejich základních tříd, protože jejich chování je popsáno v dokumentaci základní třídy.

Reference