TOC

This article has been localized into Russian by the community.

Отражение:

Правильный тип

Класс Type является основой отражения. Он служит в качестве сведений о времени выполнения сборки, модуля или типа. К счастью, получить ссылку на Тип объекта очень просто, так как каждый класс, который наследует от класса Object имеет метод gettype (). Если вам нужна информация о несозданном типе, вы можете использовать глобально доступный метод typeof (), который это с ним сделает. Рассмотрим следующие примеры, где мы используем оба подхода:

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();
        }
    }
}

Мы используем метод GetType () в нашей собственной переменной, а затем используем typeof () в известном классе Int32. Как вы можете видеть, результатом в обоих случаях является объект Type, для которого мы можем прочитать свойство FullName.

В какой-то момент у вас может даже быть только имя типа, который вы ищете. В этом случае вам придется получить ссылку на него из соответствующей сборки. В следующем примере мы получим ссылку на выполняемую сборку, то есть сборку, из которой выполняется текущий код, а затем перечислим все ее типы:

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 :)
    }
}

Выходными данными будут имена двух объявленных классов, Program и DummyClass, но в более сложном приложении список, вероятно, будет более интересным. В этом случае, мы получаем только имя типа, но, очевидно, мы могли бы сделать гораздо больше, с типом ссылки, которые мы получаем. В следующих главах я покажу вам немного больше о том, что мы можем сделать с этим.


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!