День сто сорок девятый. #ЗаметкиНаПолях

Отражение. Начало

Отражение предоставляет объекты (типа Type), которые описывают сборки, модули и типы. Используется для динамического создания экземпляра типа, привязки типа к существующему объекту или получения типа из существующего объекта и вызова его методов или доступа к его полям и свойствам. Если вы используете атрибуты в своем коде, отражение позволяет вам получить к ним доступ.

Вот простой пример отражения с использованием статического метода GetType, унаследованного всеми типами из базового класса Object, для получения типа переменной:

// Получение информации о типе 

int i = 42;

System.Type type = i.GetType();

System.Console.WriteLine(type);

// Вывод: System.Int32



// Получение информации о сборке

System.Reflection.Assembly info = typeof(System.Int32).Assembly;

System.Console.WriteLine(info);

// Вывод:

// mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089



Сценарии использования:

- Получение доступа к атрибутам в метаданных программы.

- Изучение и создание экземпляров типов в сборке.

- Создание новых типов во время выполнения. Используются классы из System.Reflection.Emit.

- Позднее связывание, доступ к методам типов, созданных во время выполнения.



Продолжение следует…



Источник: https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/concepts/reflection