Reflexe (C#)
Reflexe poskytuje objekty (typu Type ), které popisují sestavení, moduly a typy. Můžete použít reflexi k dynamickému vytvoření instance typu, svázání typu s existujícím objektem nebo získat typ z existujícího objektu a vyvolat jeho metody nebo získat přístup k jeho polím a vlastnostem. Pokud používáte atributy v kódu, reflexe vám umožní přístup k nim. Další informace najdete v tématu atributy.
Tady je jednoduchý příklad reflexe pomocí GetType() metody zděděné všemi typy ze Object základní třídy – pro získání typu proměnné:
Poznámka
Ujistěte se, že jste přidali using System; a using System.Reflection; v horní části souboru . cs .
// Using GetType to obtain type information:
int i = 42;
Type type = i.GetType();
Console.WriteLine(type);
Výstup je: System.Int32 .
Následující příklad používá reflexi k získání úplného názvu načteného sestavení.
// Using Reflection to get information of an Assembly:
Assembly info = typeof(int).Assembly;
Console.WriteLine(info);
Výstup je: System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e .
Poznámka
Klíčová slova jazyka C# protected a internal nemají žádný význam v rámci mezilehlého jazyka (IL) a nejsou použity v rozhraních API reflexe. Odpovídající výrazy v IL jsou rodina a sestavení. K identifikaci internal metody pomocí reflexe použijte IsAssembly vlastnost. K identifikaci protected internal metody použijte IsFamilyOrAssembly .
Přehled reflexe
Reflexe je užitečná v následujících situacích:
- Pokud budete mít přístup k atributům v metadatech vašeho programu. Další informace najdete v tématu načítání informací uložených v atributech.
- Pro zkoumání a vytváření instancí typů v sestavení.
- Pro vytváření nových typů v době běhu. Použijte třídy v System.Reflection.Emit .
- Pro provádění pozdní vazby získáte přístup k metodám typů vytvořeným v době běhu. Viz téma Dynamické načítání a používání typů.
Související oddíly
Další informace najdete tady:
- Reflexe
- Zobrazení informací o typu
- Reflexe a obecné typy
- System.Reflection.Emit
- Načítání informací uložených v atributech