Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Код на языке IL




Метаданные

Манифест

Ресурсы (не обязательно)

Промежуточный язык (Intermediate Language, IL) не содержит инструкций, зависящих от операционной системы и типа компьютера, что обеспечивает две новные возможности:

1 выполнение приложения на любом типе компьютера, для которого существует среда выполнения CLR;

2 повторное использование кода, написанного на любом.NET-совместимом языке.

Метаданные типов — это сведения о типах, используемых в сборке. Компилятор создает метаданные автоматически. В них содержится информация о каждом типе, имеющемся в программе, и о каждом его элементе.

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

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

Манифест сборки содержит:

• идентификатор версии;

• список всех внутренних модулей сборки;

• список внешних сборок, необходимых для нормального выполнения сборки;

• информацию о естественном языке, используемом в сборке

• «сильное» имя— специальный вариант имени сборки, используемый для открытых сборок;

• необязательную информацию, связанную с безопасностью;

• необязательную информацию, связанную с хранением ресурсов внутри сборки

Идентификатор версии относится ко всем элементам сборки. Он позволяет избегать конфликтов имен и поддерживать одновременное существование и использование различных версий одних и тех же сборок. Идентификатор версии состоит из двух частей: информационной версии в виде текстовой строки и версии совместимости в виде четырех чисел, разделенных точками:

• основной номер версии (major version);

• дополнительный номер версии (minor version);

• номер сборки (build number);

• номер ревизии (revision number).

Информация о безопасности позволяет определить, предоставить ли клиенту доступ к запрашиваемым элементам сборки. В манифесте сборки определены ограничения системы безопасности.

Ресурсы представляют собой, например, файлы изображений, помещаемых на форму, текстовые строки, значки приложения и т. д. Хранение ресурсов внутри сборки обеспечивает их защиту и упрощает развертывание приложения. Среда Visual Studio.NET предоставляет возможности автоматического внедрения ресурсов в сборку.

 

20) Использование библиотек.

Для создания библиотеки следует при разработке проекта в среде Visual Studio.NET выбрать шаблон Class Library (библиотека классов).

Любая библиотека — это сервер, предоставляющий свои ресурсы клиентам. Создадим клиентское приложение с использованием библиотеки. Для того чтобы компилятор мог ее обнаружить, необходимо после создания проекта (как обычно, это — консольное приложение) подключить ссылку на библиотеку с помощью команды Project > Add Reference (Добавить ссылку). Для поиска каталога, содержащего библиотеку, следует использовать кнопку Browse.

 

21) Рефлексия.

Рефлексия — это получение информации о типах во время выполнения программы. Например, можно получить список всех классов и интерфейсов сборки, список элементов каждого из классов, список параметров каждого метода и т.д. Вся информация берется из метаданных сборки. Для использования рефлексии необходимы класс System.Туре и типы пространства имен System.Reflection.

В классе Туре описаны методы, которые позволяют получить информацию о типах. В пространстве имен System.Reflection описаны типы, поддерживающие Туре, а также классы, которые служат для организации позднего связывания и динамической загрузки сборок.

(IsAbstract, IsArray, IsNestedPublic, IsClass, IsNestedPrivate, IsCOMObject, IsEnum, Islnterface, IsPrimitive, IsSealed, IsValueType)- Свойства,позволяющие получить соответствующие характеристики конкретного типа в программе (например, является ли он абстрактным, является ли он массивом, классом и т. п.)

(GetConstructors, GetEvents, GetFields, Get Interfaces, GetMethods, GetMembers, GetNestedTypes, GetProperties)- Методы, возвращающие массив с набором соответствующих элементов (конструкторов, событий, полей и т. п.)

Воспользоваться этими методами можно после создания экземпляра класса Туре.

Три других способа создания объектов:

1. В базовом классе object описан метод GetType, которым можно воспользоваться для любого объекта, поскольку он наследуется. Метод возвращает объект типа Туре, например:

Monster X = new Monster();

Type t = X.GetTypе();

2. В классе Type описан статический метод GetType с одним параметром строкового типа, на место которого требуется передать имя класса (типа), например:

Type t = Type.GetType ("Monster");

3. Операция typeof возвращает объект класса Туре для типа, заданного в качестве параметра, например:

Type t = typeof (Monster);

 

Методы класса Туре возвращают экземпляры стандартных классов (например, Memberlnfo). Эти классы описаны в пространстве имен System.Reflection.

 

Assembly Содержит методы для получения информации о сборке, а также для загрузки сборки и выполнения с ней различных операций

AssemblyName Позволяет получать информацию о сборке (имя, версия, совместимость, естественный язык и т. п.) EventInfo Хранит информацию о событии

Fieldlnfo Хранит информацию о поле

Memberlnfo Абстрактный базовый класс, определяющий общие элементы для классов Eventlnfo, Fieldlnfo, Methodlnfo и Propertylnfo

Methodlnfo Хранит информацию о методе Module Позволяет обратиться к модулю в многофайловой сборке Parameterlnfo Хранит информацию о параметре

Propertylnfo Хранит информацию о свойств

 

22)Атрибуты.

Атрибуты — это дополнительные сведения об элементах программы. С помощью атрибутов можно добавлять информацию в метаданные сборки и затем извлекать ее во время выполнения программы. Атрибут является специальным видом класса и происходит от базового класса System. Attribute.

Атрибуты делятся на стандартные и пользовательские.

При использовании (спецификации) атрибутов они задаются в секции атрибутов, располагаемой непосредственно перед элементом, для описания которого они предназначены. Секция заключается в квадратные скобки и может содержать не­ сколько атрибутов, перечисляемых через запятую. Порядок следования атрибутов произвольный. Для каждого атрибута задаются имя, а также необязательные параметры и тип элемента сборки, к которому относится атрибут. Простейший пример атрибута:

[Serializable]

class Monster

{

[NonSerialized]

string name;

int health, ammo;

}

Атрибут [Serializable], означающий, что объекты этого класса можно сохранять во внешней памяти, относится ко всему классу Monster. При этом поле name помечено атрибутом [NonSerialized], что говорит о том, что это поле сохраняться не должно.

Типы элемента сборки, задаваемые для атрибутов

assembly Атрибут относится ко всей сборке

field Атрибут относится к полю

event Атрибут относится к событию

method Атрибут относится к методу

pa ram Атрибут относится к параметрам метода

property Атрибут относится к свойству

return Атрибут относится к возвращаемому значению

type Атрибут относится к классу или структуре

 

Атрибут может иметь параметры. Они записываются в круглых скобках через запятую после имени атрибута и бывают позиционными и именованными. Именованный параметр указывается в форме имя = значение, для позиционного про­ сто задается значение. Например, для использованного в следующем фрагменте кода атрибута CLSCompliant задан позиционный параметр true. Атрибуты, относящиеся к сборке, должны располагаться непосредственно после директив using, например:

using System;

[assembly:CLSCompliant(true)]

namespace ConsoleApplicationl

{...

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

 

23)Пространства имен.

Пространство имен — это контейнер для типов, определяющий область их видимости. Пространства имен предотвращают конфликты имен и используются для двух взаимосвязанных целей:

• логического группирования элементов программы, расположенных в различных физических файлах;

• группирования имен, предоставляемых сборкой в пользование другим модулям.

Если в разных файлах описать пространства имен с одним и тем же именем, то при построении приложения, состоящего из этих файлов, будет скомпоновано единое пространство имен.

Существует три способа использования типа, определенного в каком-либо пространстве имен:

1. Использовать полностью квалифицированное имя.

2. Использовать директиву using, с помощью которой импортируются все имен; из заданного пространства.

3. Использовать псевдоним типа. Это делается с помощью второй формы директивы using

В версию языка С# 2.0 введена возможность применять псевдоним пространства имен с помощью операции::

Использование псевдонима для пространства имен гарантирует, что последующие подключения других пространств имен к этой сборке не повлияют на существующие определения.

 

24) Директивы препроцессора.

Препроцессором в языке С++ называется предварительный этап компиляции, формирующий окончательный вариант текста программы. В языке С#, потомке С++, препроцессор практически отсутствует, но некоторые директивы сохранились. Назначение директив — исключать из процесса компиляции фрагменты ода при выполнении определенных условий, выводить сообщения об ошибках предупреждения, а также структурировать код программы. каждая директива располагается на отдельной строке и не заканчивается точкой запятой, в отличие от операторов языка. В одной строке с директивой может располагаться только комментарий вида //.




Поделиться с друзьями:


Дата добавления: 2017-01-13; Просмотров: 589; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.028 сек.