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, но в более сложном приложении список, вероятно, будет более интересным. В этом случае, мы получаем только имя типа, но, очевидно, мы могли бы сделать гораздо больше, с типом ссылки, которые мы получаем. В следующих главах я покажу вам немного больше о том, что мы можем сделать с этим.