This article has been localized into Czech by the community.
Správný typ
Třída Type je základem Reflexe. Slouží jako informace za běhu o sestavení, modulu nebo typu. Naštěstí získání odkazu na Type objektu je velmi jednoduché, protože každá třída, která dědí z třídy Object, má metodu GetType(). Pokud potřebujete informace o typu, který není instanciován, můžete použít globálně dostupnou metodu typeof(), která právě to udělá. Zvažte následující příklady, kde používáme oba přístupy:
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace ReflectionTest
{
class Program
{
static void Main(string[] args)
{
string test = "test";
Console.WriteLine(test.GetType().FullName);
Console.WriteLine(typeof(Int32).FullName);
Console.ReadKey();
}
}
}
Používáme metodu GetType() na naší vlastní proměnné a poté použijeme typeof() na známou třídu, Int32. Jak vidíte, v obou případech je výsledkem objekt Type, pro který můžeme číst vlastnost FullName.
V některém okamžiku můžete mít dokonce pouze název typu, který hledáte. V tom případě budete muset získat odkaz na něj z příslušného sestavení. V následujícím příkladu získáme odkaz na provádějící sestavení, tedy sestavení, ze kterého je aktuální kód spouštěn, a poté vypíšeme všechny jeho typy:
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace ReflectionTest
{
class Program
{
static void Main(string[] args)
{
Assembly assembly = Assembly.GetExecutingAssembly();
Type[] assemblyTypes = assembly.GetTypes();
foreach(Type t in assemblyTypes)
Console.WriteLine(t.Name);
Console.ReadKey();
}
}
class DummyClass
{
//Just here to make the output a tad less boring :)
}
}
Výstupem budou názvy dvou deklarovaných tříd, Program a DummyClass, ale v komplexnější aplikaci by seznam pravděpodobně byl zajímavější. V tomto případě získáme pouze název typu, ale samozřejmě bychom s odkazem na Type, který získáme, mohli udělat mnohem více. V následujících kapitolách vám ukážu trochu více, co s ním můžeme dělat.