Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 118

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 112 113 114 115 116 117 < 118 > 119 120 121 122 123 124 .. 320 >> Следующая

Внутренние данные класса, к которым возможен доступ из внешнего мира, помечаются тегом [.field] (поле). Нарис. 6,15 представлен код ІЬдля переменной currSpeed (fami Iyозначает, что при объявлении этой переменной было использовано ключевое слово protected).
Свойства класса помечаются тегом [.property]. Нарис. 6.16 представлен кода для свойства CurrSpeed (как мы помним, это свойство обеспечивает доступ к переменной currSpeed). Конечно же, возможность использовать это свойство для чтения и (или) записи регулируется наличием или отсутствием соответствующих методов vet._J! sel_ (они помечены тегами [.get" и Г =.сч]).
Чтобы просмотреть метаданные типов, достаточно в окне ILDasm.exe нажать CtrL+M (рис. 6.17).
Метаданные и код IL для типов
CarLibrary 2S1
'' :¦; UlJ ,! .. їм'. ; VOid()
method public hidefoyaig victual instance void _~ TurboBooat (J cil managed
// Code siss ,maxstaci 8 ILJJOOO: ldatr IL_0005: ldstr
IL 00Oa: call
17 !DxIl)
"Ramming s^eedV "Faster is better..." valuetype [System.Windows Л
IL_00Cf: pop
Ib_0010: ret } /І end of method SportsCar::TurboBooat ij- I
Рис. 6.14. Код IL для метода SportsCar.TurboBoost()
Г і .tr-tiirrbpecJ: family irih I fi
field family int 16 currSpeed Jj
Рис. 6.15. Код IL для переменной currSpeed
Гr<ir::<.u>rS|>(-4>ti щЫфи.г «AIbQ
і
get instance intl6 Carbibcary. Car;:get_CurcSpeed|) set instance void CacLibcary. Car :;set_CurrSpeed(intlf
} Il end of property Саг:іCurrSpeed
Fmc 6.16. Код IL для свойства CurrSpeed
-I
TypDefHarne: CarLibrary.Саг (02000002)
: [Public] [AutoLayout] [Claaa] [Ab Extends : 01000001 [TypeRefJ System.Object T±e:ld #1
Field Name: petSame [04000001) Flags : [Family] (QD000004J
DefltValue;
-lJ_I
Рис. 6.17. Метаданные ТХЛОВ
Эти метаданные нужны среде выполнения .N HT для создания объектов и вы зова методов. Visual Studio.NET и другие средства используют метаданные ти-
282 Глава б • Сборки, потоки и домены приложений
ион во время разработки для проверки числа и типов параметров, передаваемых методам.
Подведем итоги того, о чем говорилось в предыдущих разделах;
• сборка — это набор модулей с самоописанием и идентификатором версии. Каждый модуль может содержать определения типов и (необязательно) до-
ресурсы;
• каждая сборка содержит метаданные, которые описывают все типы внутри нее. Среда выполнения .NET и средства разработки используют метаданные типов для поиска определений, создания объектов, проверки вызова методов, применения технологии и т. п.;
• каждая сборка содержит манифест, в котором перечислены все внутренние и внешние файлы, необходимые для нормальной работы сборки. Кроме того, в манифесте записана информация о версии, атрибутах сборки и прочие данные, характеризующие сборку.
Следующая часть настоящей главы посвящена различиям между частными сборками (private assemblies) и сборками, предназначенными для общего доступа (shared assemblies). Если вы пришли в мир .NET, обладая опытом работы с классическим СОМ, вы увидите, что реализация концепции совместно используемых компонентов претерпела в существенные изменения.
Частные сборки
Любая сборка может быть либо частной (private), либо сборкой для общего доступа (shared) - третьего не дано. У обеих версией сборок есть как общие черты, так и различия. Общихчерт гораздо больше: у всех сборок .NET одинаковая структура и схожее содержание (например, обатипасборокпредоставляютдоступ ксво-им открытым членам). Различия между этими типами сборок состоят в особенностях их именования, политики версий и размещения сборок на компьютере пользователя. Знакомство с типами сборок мы начнем с первого из них — частных сборок, - как наиболее распространенного.
Частные сборки .NET - это наборы типов, которые могут быть использованы только теми приложениями, в состав которых они входят. Например, наша библиотека CarLibrary. du — это частная библиотека, которая может быть использована приложениями CSharpCarClient и VBCarCUent (при создании этих приложений мы явно определили, что они будут использовать эту библиотеку, и добавили на нее ссылку).
Частные сборки должны находиться в основном каталоге приложения-владельца, они могут также находиться в подкаталогах этого каталога. Основной каталог прнложения-владельца в .NEI называется каталогом приложения (application directory). Вспомним, что когда мы добавили в проекты CSharpCarClient и VBCarCUent ссылки на сборку CarUbrary.dll, интегрированная среда разработки Visual Studio.NET автоматически создала в каталоге приложения (в момент разработки это — /Debug) копию CarLibrary.dll, Таким образом, размещение копии частной сборки там, где ее будут искать (в каталоге приложения), происходит автоматически.
Для того чтобы осознать, как это хорошо, можно вспомнить, что в классическом 1COM нам было необходимо создавать записи в разделе реестра HKEY_CLASSES_ROOT
Технология «зондирования» 283
и указывать пути к исполняемым файлам, используя !nprocServer32 или LocaiSe ver32. В MSH. программа не потеряет работоспособнаїсти и в том случае, если вы переместите частную сборку с исполняемым файлом в другое место -- гл;ншоі\ чтобы они были в одном каталоге. Для примера можно перетащить CSharpCarQient.e;-:e и CarLibrary.dk на рабочий стол (рис. 6.18) - все будет работать.
Предыдущая << 1 .. 112 113 114 115 116 117 < 118 > 119 120 121 122 123 124 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100