Поделиться через


Отражение (C# и Visual Basic)

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

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

' Using GetType to obtain type information:
Dim i As Integer = 42
Dim type As System.Type = i.GetType()
System.Console.WriteLine(type)
// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);

Результат выполнения кода:

System.Int32

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

' Using Reflection to get information from an Assembly:
Dim info As System.Reflection.Assembly = GetType(System.Int32).Assembly
System.Console.WriteLine(info)
// Using Reflection to get information from an Assembly:
System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);

Результат выполнения кода:

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

Примечание

Ключевые слова C# protected и internal не имеют никакого значения в промежуточном языке и не используются в интерфейсах API отражения.Соответствующими терминами в промежуточном языке являются Family и Assembly.Для идентификации метода internal с помощью отражения используется свойство IsAssembly.Для идентификации метода protected internal используется свойство IsFamilyOrAssembly.

Общие сведения об отражении

Отражение удобно использовать в следующих ситуациях.

Связанные разделы

Дополнительные сведения:

См. также

Ссылки

Домены приложений (C# и Visual Basic)

Основные понятия

Руководство по программированию на C#

Сборки в среде CLR

Другие ресурсы

Руководство по программированию на Visual Basic