Теперь у вас должен возникнуть следующий вопрос:
Замечание. В окне MetaInfo утилиты ildasm.exe вы обнаружите также ряд меток CustomAttribute, которые используются для обозначения атрибутов, примененных в базовом программном коде. Роль атрибутов .NET мы обсудим в этой главе немного позже.
Отображение типов в .NET
В терминах .NET
Подобно любому другому пространству имен, System.Reflection содержит ряд связанных типов. В табл. 12.1 приводится список элементов этого пространства имен, о которых вам следует знать.
Таблица 12.1. Некоторые элементы пространства имен System.Reflection
| Тип | Описание |
|---|---|
| Assembly | Этот класс (вместе с множеством связанных типов) предлагает ряд методов, позволяющих загружать, исследовать и обрабатывать компоновочный блок |
| AssemblyName | Класс, позволяющий выяснить многочисленные подробности, касающиеся идентификации компоновочного блока (информацию о версии, параметры локализации и т.д.) |
| EventInfo | Класс, содержащий информацию об указанном событии |
| FieldInfo | Класс, содержащий информацию об указанном поле |
| MemberInfо | Абстрактный базовый класс, определяющий общие характеристики поведения для типов EventInfo, Fieldlnfo, MethodInfo и PropertyInfo |
| MethodInfo | Класс, содержащий информацию об указанном методе |
| Module | Класс, позволяющий получить доступ к указанному модулю многомодульного компоновочного блока |
| ParameterInfo | Класс, содержащий информацию об указанном параметре |
| PropertyInfo | Класс, содержащий информацию об указанном свойстве |
Чтобы понять, как использовать пространство имен System.Reflection для чтения метаданных .NET программными средствами, мы с вами должны сначала ознакомиться с возможностями класса System.Type.
Класс System.Type
Класс System.Type определяет ряд членов, которые могут использоваться для чтения метаданных типа, и многие из этих членов возвращают типы из пространства имен System.Reflection. Например, тип Type.GetMethods возвращает массив типов MethodInfo, тип Type.GetFields возвращает массив типа FieldInfo и т.д. Полный набор открытых членов System.Type очень велик. В табл. 12.2 предлагается небольшой список наиболее важных из них (подробности описания можно найти в документации .NET Framework 2.0 SDK).
Таблица 12.2. Избранные члены System.Type