Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 288

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 282 283 284 285 286 287 < 288 > 289 290 291 292 293 294 .. 404 >> Следующая


о версиях. В поле Description находится описание содержимого атрибута AssemblyTitle.

Атрибут Информация о версии
AssemblyTitle Description (описание)
AssemblyDescription Comments (комментарии)
AssenblyCompany Company Name (название компании)
As semblyTrademarSt Legal Trademarks (официальные торговые марки)
AssemblyVersion Assembly Version and Product Version (версия модуля н всрсня продукта)
AssemblyCopyright Copyright (копирайт)
Ass emblyProduct Product Name (наименование продукта)

В таблице слева перечислены атрибуты модуля и соответствующие им имена на вкладке с информацией о версии.
Перечень атрибутов, предстасленкых в окне со свойствами, оказывается несколько меньше, чем перечень атрибутов, описанных в модуле. Компанией Microsoft предусмотрено отображение в окне свойств только некоторых, наиболее часто используемых атрибутов, а для того чтобы добраться до остальных атрибутов, требу ется либо написать некоторый код (этот код приводится в следующем разделе), либо воспользоваться ildesra.

Для того чтобы найти все атрибуты, относящиеся я данному модулю, можно использовать ildasm, который позволяет просмотреть модуль и найти все описанные в нем атрибуты. Если вы до сих пор не включили iidaam в VS в качестве внешнего инструмента, то следует воспользоваться инструкциями о том, как это следует делать, приведенными в предыдущей главе.

Откройте iidaam и выберите модуль с помощью меню File | Open. После этогс на экране можно увидеть следующее:

I f ?;\Begsrming C#\Chapter 22\Code\?tsu^iStu<juj\Ai<ri;n^Lily ¦ peJiuai j&
Fte wt* • ¦¦¦>>.
a v ?:\8eginninoC#\Ch j~ ^ БЕВШЭЕВ ' lb- Щ Assembynfo a[A& 22\CodeWr«jalS[udioVAssembynfo\birt\Debi^\Atsenib(yln(o,ei«! [
.assembly A-iitinbMi'Jo { „ ¦ ¦ ¦¦ . ¦ ¦ id ll
Ы . ¦ . • , • ¦ ¦ .. -ii Л

Щелкнув два раза мышью на выделенном разделе MANIFEST, вы откроете окно более низкого уровня, в котором находится манифест модуля, подробно описанный в предыдущей главе. Немного прокрутив это файл вниз, вы увидите несколько странно выглядящих строк кода:

.assembly Aseemblylnfo {

•custom instance void

[mscorlib]System.Reflection. AesemblyCopyrigrhtAttribute:: .ctor (string)

= (01 00 00 00 00)

.custom instance void

[tnscorlibJSyatera. Ref lection. AssemblyKeyNameAttribute: :, ctor (string)

- (01 00 00 00 00)

.custom instance void

[mscorllb]System.Reflection. AssemblyTitleAttribute::.ctor(string)

= (01 00 0A 57 72 6F 78 20 72. fiF 63 6B 73 00 00) // Wrox rocXs..

•hash algorithm 0x00003004 .

•ver 1:0:522:37167 J . '

Просматривая файл, вы сможете обнаружить целый ряд объявлений, которые несколько напоминают объявления типа:

Imecorlib)System,Reflection. AssemblyTitleAttribute::.ctor(string)

= (01 00 0A 57 72 6F 78 20 72 fiF «3 6B 73 00 00) // Vrox r<Kka. .
616

Глава 22

Значение атрибута AssemblyTitle, которое мы перед этим ввели, оказалось сохраненным в манифесте модуля, Если вы воспользуетесь таблицей перекодировки нз шестнадцатеричных значений в кодировку ASCII, то обнаружите, что набор символов, расположенный после ‘01 00 0А', представляет собой не что иное, как текст ‘Wrox rocks’, представленный в кодировке ASCII. Начальные байты ‘01 00’ представляют собой двухбайтовый идентификатор, а ‘0А’ определяет длину строки (десять символов). Такая процедура сохранения атрибутов известна под названием ‘pickling’ (консервирование) — этот термин может встретиться в различных материалах по .NET, имеющихся в web.

В приведенном выше участке кода из файла Assembiyinfo.cs было использовано слово AssemblyTitle, хотя в коде на IL класс представляется в виде Assembly-TitleAttribute. Компилятор C# сначала осуществляет поиск класса с названием AssemblyTitle, а Затем, ССЛИ ПОИСК не дал результатов, добавляет слово Attribute и осуществляет поиск повторно. Поэтому, независимо от того, набираете ли вы название класса полностью или опускаете последнее слово Attribute, в обоих случаях будет сгенерирован один и тот же код. На протяжении настоящей главы это слово будет опускаться.

Сохраненное (законсервированное) в манифесте объявление атрибута подозрительно напоминает объект вместе со его конструктором, а байты, заключенные в скобки,— параметры, передаваемые конструктору.

Теперь, получив общее представление об атрибутах, мы можем дать атрибуту следующее определение:

Атрибут — это класс, в котором могут храниться дополнительные данные внутри модуля, имеющие отношение к данному модулю или к типам, содержащимся в данном модуле.

С учетом того, что атрибут — это класс, а в манифесте атрибут хранится в представленном выше формате, можно пересмотреть определение атрибута, данное выше в настоящей главе:

[аэвчгаЫу: AseemblyTitle('Wrox rocks') 1

Этот синтаксис несколько отличается от обычного синтаксиса С#, поскольку он предполагает использование квадратных скобок, в которые заключается атрибут. Тег assembly: определяет область действия данного атрибута (которая будет рассматриваться ниже в данной главе), а в остальной части записи объявляется собственно атрибут, У атрибута AsaembiyTitie есть конструктор, которому передается только один параметр — строковое значение. Компилятор включает это значение в модуль. Доступ к значению может быть осуществлен с помощью стандартного окна свойств Windows, при просмотре этого модуля с помощью iidasm или программным путем с помощью отражения.
Предыдущая << 1 .. 282 283 284 285 286 287 < 288 > 289 290 291 292 293 294 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.