Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Роль типа ModuleBuilder
Роль типа ModuleBuilder
Тип ModuleBuilder является ключевым типом для процесса построения динамических компоновочных блоков. В соответствии с возможными ожиданиями, ModuleBuilder предлагает целый ряд членов, позволяющих определить множество типов, содержащихся в данном модуле (классы, интерфейсы, структуры и т.д.), а также множество встроенных ресурсов (таблицы строк, изображения и т.д.; формат ресурсов .NET будет рассмотрен в главе 20). Некоторые из методов, относящихся к созданию инфраструктуры модуля, описаны в табл. 15.11 (каждый из этих методов возвращает тип, представляющий тот тип, который вы собирались сконструировать).
Таблица 15.11. Подборка членов типа ModuleBuilder
Метод | Описание |
---|---|
DefineEnum() | Используется для генерирования определения перечня .NET |
DefineResource() | Определяет управляемый встроенный ресурс, который должен храниться в данном модуле |
DefineType() | Конструирует TypeBuilder, который позволяет определять типы значений, интерфейсы и типы класса (в том числе и делегаты) |
Ключевым членом класса ModuleBuilder, о котором следует знать, является DefineType(). Вдобавок к указанию имени типа (в виде простой строки), вы должны использовать перечень System.Reflection.TypeAttributes, чтобы непосредственно описать формат типа. Основные члены перечня TypeAttributes представлены в табл. 15.12.
Таблица 15.12. Подборка элементов перечня TypeAttributes
Член | Описание |
---|---|
Abstract | Указывает абстрактный тип |
Class | Указывает тип класса |
Interface | Указывает тип интерфейса |
NestedAssembly | Указывает, что класс вложен в область видимости компоновочного блока и поэтому доступен только для методов соответствующего компоновочного блока |
NestedFamAndAssem | Указывает, что класс вложен в область видимости семейства и компоновочного блока и поэтому доступен только для методов, принадлежащих пересечению соответствующего семейства и компоновочного блока |
NestedFamily | Указывает, что класс вложен в область видимости семейства и поэтому доступен только для методов соответствующего типа и его подтипов |
NestedFamORAssem | Указывает, что класс вложен в область видимости семейства или компоновочного блока и поэтому доступен только для методов, принадлежащих объединению соответствующего семейства и компоновочного блока |
NestedPrivate | Указывает вложенный класс с приватной областью видимости |
NestedPublic | Указывает вложенный класс с общедоступной областью видимости |
NotPublic | Указывает класс, не являющийся открытым |
Public | Указывает открытый класс |
Sealed | Указывает изолированный класс, который не может быть расширен |
Serializable | Указывает класс, допускающий сериализацию |
- Исследование пространства имен System.Reflection.Emit
- Роль System.Reflection.Emit.ILGenerator
- Генерирование динамического компоновочного блока
- Генерирование компоновочного блока и набора модулей
- Роль типа ModuleBuilder
- Генерирование типа HelloClass и принадлежащей ему строковой переменной
- Генерирование конструкторов
- Генерирование метода HelloWorld()
- Использование динамически сгенерированного компоновочного блока
- Генерирование типа HelloClass и принадлежащей ему строковой переменной
- Роль товарной категории и установление цены
- Роль папки Bin
- Использование CAST() с типами дата
- Контрольные вопросы
- Перегрузка методов с несколькими параметрами типа
- Создание столбцов и работа с типами содержимого
- Глава 14. Почему потребительский опыт играет важную роль в выстраивании клиентских взаимоотношений
- Пропуск параметров типа
- Запуск сценариев на удаленных машинах. Контроль за ходом выполнения таких сценариев
- З.1.2. Пароль BIOS не сбрасывается даже при удалении батарейки. Почему?
- Не хочу, чтобы компьютером пользовались в мое отсутствие. Как установить пароль и блокировать машину?