TOC

This article has been localized into Czech by the community.

Reflexe:

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.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!