Исследование пространства имен System.Reflection.Emit
Исследование пространства имен System.Reflection.Emit
Для создания динамического компоновочного блока требуется в определенной мере понимать коды операций CIL, но типы пространства имен System.Reflection. Emit в максимальной мере "пытаются" скрыть сложность CIL. Например, вместо прямого указания необходимых директив и атрибутов CIL при определении типа класса вы можете просто использовать класс TypeBuilder. Точно так же, чтобы определить новый конструктор уровня экземпляра, нет никакой необходимости использовать specialname, rtspecialname и лексемы .ctor – вместо этого можно просто использовать ConstructorBuilder. Описания ключевых членов пространства имен System.Reflection.Emit приводятся в табл. 15.8.
Таблица 15.8. Избранные члены пространства имен System.Reflection.Emit
Члены Описание AssemblyBuilder Используется для создания компоновочного блока (*.dll или *.exe) в среде выполнения. В случае *.exe следует вызвать метод ModuleBuilder.SetEntryPoint(), чтобы указать метод, являющийся точкой входа в модуль. Если точка входа не указана, будет сгенерирована *.dll ModuleBuilder Используется для определения множества модулей в рамках данного компоновочного блока EnumBuilder Используется для создания типа перечня .NET TypeBuilder Может использоваться дли создания классов, интерфейсов, структур и делегатов в рамках модуля в среде выполнения MethodBuilder EventBuilder LocalBuilder PropertyBuilder FieldBuilder ConstructorBuilder CustomAttributeBuilder ParameterBuilder Используются для создания членов типа (таких как методы, локальные переменные, свойства, конструкторы и атрибуты) в среде выполнения ILGenerator Генерирует коды операций CIL в данном члене типа OpCodes Обеспечивает множество полей, отображающихся в коды операций CIL. Этот тип используется вместе с различными членами System.Reflection.Emit.ILGeneratorВ общем, типы пространства имен System.Reflection.Emit при построении динамического двоичного модуля позволяют представлять "сырые" лексемы CIL программными единицами. Возможности использования многих из указанных членов будут продемонстрированы в следующем примере, но тип ILGenerator заслуживает отдельного обсуждения.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
1.4. Пространства имен
1.4. Пространства имен Если два неродственных процесса используют какой-либо вид IPC для обмена информацией, объект IPC должен иметь имя или идентификатор, чтобы один из процессов (называемый обычно сервером — server) мог создать этот объект, а другой процесс (обычно один или
Интерфейсы из пространства имен System.Collections
Интерфейсы из пространства имен System.Collections В качестве самого примитивного контейнера может выступать тип System.Array. В главе 3 было показано, что класс System.Array предлагает целый ряд соответствующих возможностей (таких, как инвертирование, сортировка, очистка и перечисление).
Классы из пространства имен System.Collections
Классы из пространства имен System.Collections Еще раз подчеркнем, что интерфейсы остаются бесполезными до тех пор, пока они не реализованы соответствующим классом или соответствующей структурой. В табл. 7.3 предлагаются описания основных классов из пространства имен System.Collections
Анализ пространства имен System.IO
Анализ пространства имен System.IO В .NET пространство имен System.IO является той частью библиотек базовых адресов, которая обслуживает службы ввода-вывода, как для файлов, так и для памяти. Подобно любому другому пространству имен, System.IO определяет свой набор классов,
Обзор пространства имен System.Windows.Forms
Обзор пространства имен System.Windows.Forms Как и любое другое пространство имен, System.Windows.Forms компонуется из различных классов, структур, делегатов, интерфейсов и перечней. Хотя различие между консольным (CUI) и графическим (GUI) интерфейсами, на первый взгляд, кажется подобным
Обзор пространства имен System.Drawing
Обзор пространства имен System.Drawing Большинство типов, которые вам придется использовать при создании GDI-приложений, содержится в пространстве имен System.Drawing. Как и следует ожидать, здесь есть классы, представляющие изображения, кисти, перья и шрифты. Кроме того, System.Drawing
Обзор пространства имен System.Drawing.Drawing2D
Обзор пространства имен System.Drawing.Drawing2D Теперь, когда мы обсудили возможности использования типа Font, следующей нашей задачей будет рассмотрение объектов Pen и Brush, предназначенных для визуализации геометрических шаблонов. Вы, конечно, можете ограничиться использованием
Пространства имен ASP.NET 2.0
Пространства имен ASP.NET 2.0 В библиотеках базовых классов .NET 2.0 предлагается не менее 34 пространств имен, имеющих отношение к Web. Всю эту совокупность пространств имен можно разбить на четыре главные группы.• Базовые функциональные возможности (типы, обеспечивающие
Пространства имен
Пространства имен В программе на языке Си имена (идентификаторы) используются для ссылок на различного рода объекты — функции, переменные, формальные параметры и т. п. При соблюдении определенных правил, описанных в данном разделе, допускается использование одного и
8.5.1. Определения пространства имен
8.5.1. Определения пространства имен Определение пользовательского пространства имен начинается с ключевого слова namespace, за которым следует идентификатор. Он должен быть уникальным в той области видимости, в которой определяется данное пространство; наличие другой
8.5.5. ПОО и члены пространства имен
8.5.5. ПОО и члены пространства имен Как уже было сказано, определение пространства имен может состоять из разрозненных частей и размещаться в разных файлах. Следовательно, член пространства разрешено объявлять во многих файлах. Например:// primer.hnamespace cplusplus_primer {// ...void inverse(
8.5.6. Безымянные пространства имен
8.5.6. Безымянные пространства имен Может возникнуть необходимость определить объект, функцию, класс или любую другую сущность так, чтобы она была видимой только в небольшом участке программы. Это еще один способ решения проблемы засорения глобального пространства
8.6.1. Псевдонимы пространства имен
8.6.1. Псевдонимы пространства имен Псевдоним пространства имен используется для задания короткого синонима имени пространства. Например, длинное имяnamespace International_Business_Machines{ /* ... */ }может быть ассоциировано с более коротким синонимом:namespace IBM = International_Business_Machines;Объявление