Российский Государственный Технологический Университет им. К.Э. Циолковского
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 5636 / 790 | Оценка: 3.96 / 3.45 | Длительность: 27:04:00
ISBN: 978-5-9556-0086-4
Лекция 10:

Атрибуты, сборки, рефлексия

Сборка. Класс Assembly

Класс Assembly определяет Сборку – основной строительный блок Common Language Runtime приложения. Как строительный блок CLR, сборка обладает следующими основными свойствами:

  • возможностью многократного применения;
  • versionable (версифицированностью);
  • самоописываемостью.

Эти понятия являются ключевыми для решения проблемы отслеживания версии и для упрощения развертывания приложений во время выполнения.

Сборки обеспечивают инфраструктуру, которая позволяет во время выполнения полностью "понимать" структуру и содержимое приложения и контролировать версии и зависимости элементов выполняемого приложения.

Сборки бывают:

  • частными (private). Представляют наборы типов, которые могут быть использованы только теми приложениями, где они включены в состав. Располагаются в файлах с расширениями .dll (.exe) и .pdb (program debug Database). Для того чтобы использовать в приложении частную сборку, ее надо ВКЛЮЧИТЬ в приложение, то есть разместить в каталоге приложения (application directory) или в одном из его подкаталогов;
  • общего доступа (shared). Также набор типов и ресурсов внутри модулей (модуль – двоичный файл сборки). Предназначены для использования НЕОГРАНИЧЕННЫМ количеством приложений на клиентском компьютере. Эти сборки устанавливаются не в каталог приложения, а в специальный каталог, называемый Глобальным Кэшем Сборок (Global Assembly Cache – GAC). Кэш на платформе Windows XP усилиями специальной утилиты принимает вид каталога (путь ...\WINDOWS\assembly). Таким образом, в .NET ВСЕ совместно используемые сборки собираются в одном месте. Имя ("общее имя" или "строгое имя") сборки общего доступа строится с использованием информации о версии сборки.

Загружаемая сборка строится как БИБЛИТОТЕКА КЛАССОВ (файл с расширением .dll), либо как выполняемый модуль (файл с расширением .exe).

Если это файл с расширением .dll, то в среде Visual Studio ее использование поддерживается специальными средствами среды. Это "полуавтоматическая" загрузка частной сборки в Reference приложения (Add Reference...). Сборки, располагаемые в .exe-файлах, особой поддержкой для включения сборки в состав приложения не пользуются.

Для анализа сборки применяется утилита IlDasm.exe, которую можно подключить к непосредственно вызываемому из среды разработки Visual Studio списку утилит.

Ниже представлены члены класса сборки.

Открытые свойства
CodeBase Возвращает местонахождение сборки, указанное первоначально, например в объекте AssemblyName
EntryPoint Возвращает точку входа для этой сборки
EscapedCodeBase Возвращает URI, предоставляющий базовый код, включая escape-знаки
Evidence Возвращает свидетельство для этой сборки
FullName Возвращает отображаемое имя сборки
GlobalAssemblyCache Возвращает значение, показывающее, была ли сборка загружена из глобального кэша сборок
ImageRuntimeVersion Возвращает версию общеязыковой среды выполнения (CLR), сохраненной в файле, который содержит манифест
Location Возвращает местонахождение в формате базового кода загруженного файла, содержащего манифест, если для него не было теневого копирования
Открытые методы
CreateInstance Перегружен. Находит тип в этой сборке и создает его экземпляр, используя абстрактный метод
CreateQualifiedName Статический. Создает тип, задаваемый отображаемым именем его сборки
Equals (унаследовано от Object ) Перегружен. Определяет, равны ли два экземпляра Object
GetAssembly Статический. Возвращает сборку, в которой определяется заданный класс
GetCallingAssembly Статический. Возвращает Assembly метода, который вызывает текущий метод выполнения
GetCustomAttributes Перегружен. Возвращает пользовательские атрибуты для этой сборки
GetEntryAssembly Статический. Возвращает процесс, исполняемый в домене приложения по умолчанию. В других доменах приложений это первый исполняемый процесс, который был выполнен AppDomain.ExecuteAssembly
GetExecutingAssembly Статический. Возвращает Assembly, из которой исполняется текущий код
GetExportedTypes Возвращает экспортируемые типы, определенные в этой сборке
GetFile Возвращает объект FileStream для указанного файла из таблицы файлов манифеста данной сборки
GetFiles Перегружен. Возвращает файлы в таблице файлов манифеста сборки.
GetHashCode (унаследовано от Object ) Служит хэш-функцией для конкретного типа, пригоден для использования в алгоритмах хэширования и структурах данных, например в хэш-таблице
GetLoadedModules Перегружен. Возвращает все загруженные модули, являющиеся частью этой сборки
GetManifestResourceInfo Возвращает информацию о способе сохранения данного ресурса
GetManifestResourceNames Возвращает имена всех ресурсов в этой сборке
GetManifestResourceStream Перегружен. Загружает указанный ресурс манифеста из сборки
GetModule Возвращает указанный модуль этой сборки
GetModules Перегружен. Возвращает все модули, являющиеся частью этой сборки
GetName Перегружен. Возвращает AssemblyName для этой сборки
GetObjectData Возвращает сведения сериализации со всеми данными, необходимыми для повторного создания этой сборки
GetReferencedAssemblies Возвращает объекты AssemblyName для всех сборок, на которые ссылается данная сборка
GetSatelliteAssembly Перегружен. Возвращает сопутствующую сборку
GetType Перегружен. Возвращает объект Type, предоставляющий указанный тип
GetTypes Возвращает типы, определенные в этой сборке
IsDefined Показывает, определен ли пользовательский атрибут, заданный указанным значением Type
Load Статический. Перегружен. Загружает сборку
LoadFile Статический. Перегружен. Загружает содержимое файла сборки
LoadFrom Статический. Перегружен. Загружает сборку
LoadModule Перегружен. Загружает внутренний модуль этой сборки
LoadWithPartialName Статический. Перегружен. Загружает сборку из папки приложения или из глобального кэша сборок, используя частичное имя
ToString Переопределен. Возвращает полное имя сборки, также называемое отображаемым именем
Открытые события
ModuleResolve Возникает, когда загрузчик классов общеязыковой среды выполнения не может обработать ссылку на внутренний модуль сборки, используя обычные средства
Защищенные методы
Finalize (унаследовано от Object ) Переопределен. Позволяет объекту Object попытаться освободить ресурсы и выполнить другие завершающие операции, перед тем как объект Object будет уничтожен в процессе сборки мусора.

В языках C# и C++ для функций финализации используется синтаксис деструктора

MemberwiseClone (унаследовано от Object ) Создает неполную копию текущего Object
kewezok kewezok
kewezok kewezok
Елена Шляхт
Елена Шляхт
Объясните плиз в чем отличие а++ от ++а
Почему результат разный?
int a=0, b=0;
Console.WriteLine(a++); //0
Console.WriteLine(++b); //1
a++;
++b;
Console.WriteLine(a); //2
Console.WriteLine(b); //2