Cтраница 2
Специальный атрибут применяется к конструкции, которая следует сразу же за ним. В данном примере специальный атрибут применяется к классу TFoo. Несомненно, вы обратили внимание, что синтаксис применения специального атрибута фактически идентичен синтаксису идентификаторов GUID в Delphi. Возникает проблема: идентификаторы GUID применяются к интерфейсам, при этом GUID должен указываться сразу же после объявления интерфейса. С другой стороны, специальный атрибут указывается непосредственно перед объявлением, в отношении которого он применяется. [16]
CLI подразумевает, что каждый устанавливаемый модуль ( assembly - агрегат) должен быть самоописываемым объектом. По этой причине каждый модуль должен нести в себе данные, которые полностью идентифицируют собой этот модуль ( имя, версию, сведения о культуре и открытый ключ), данные о типах, определенных внутри агрегата ( модуля), список файлов, на которые ссылается модуль, а также любые специальные разрешения безопасности. Система метаданных является расширяемой, благодаря чему агрегат может содержать определенные пользователем описательные документы, которые называют специальными атрибутами. [17]
Специальный атрибут применяется к конструкции, которая следует сразу же за ним. В данном примере специальный атрибут применяется к классу TFoo. Несомненно, вы обратили внимание, что синтаксис применения специального атрибута фактически идентичен синтаксису идентификаторов GUID в Delphi. Возникает проблема: идентификаторы GUID применяются к интерфейсам, при этом GUID должен указываться сразу же после объявления интерфейса. С другой стороны, специальный атрибут указывается непосредственно перед объявлением, в отношении которого он применяется. [18]
Утилита SN создает ключевой файл, ссылка на который содержится в одном из атрибутов агрегата. При этом разработчики работают только с открытой частью ключа. Позже, когда генерируется финальная сборка агрегата, в сигнатуру добавляется закрытый ключ. NET плохо работает со специальными атрибутами. Однако именно эти атрибуты используются для идентификации и ссылок на файл с ключами. NET поддержка агрегатов со строго заданным именем на момент написания данной книги реализована не полностью. [19]
На рис. 2.4.3 приведены примеры представления данных о служащих и компаниях, демонстрирующие различия между табличным представлением отношения и табличным представлением типов записей. Показаны интенсиональные элементы ( спецификации типов) и расширения. Реализации типов записей упорядочены в соответствии с номерами, указанными слева от таблицы. Строки реляционной таблицы не упорядочиваются. Наличие этих дубликатов может означать, что АЕС имеет в Торонто два оффиса. В реляционной таблице такого рода факт должен быть представлен другим способом, например с помощью специального атрибута, показывающего число оффисов в каждом географическом пункте. [20]