Анонимные методы
Вставка кода в метод, вместо создания ещё одного метода
Уменьшение количества методов класса
Создание «замкнутых областей»
Тип делегата вводится автоматически
Локальная переменная блока, в котором определён анонимный метод, является для него внешней
Внешняя переменная, использующаяся анонимным методом, называется захваченной
захваченные объекты существуют до тех пор пока существуют использующие их методы
нельзя использовать ref и out параметры
нельзя использовать this в анонимном методе, если он опр-ся в структуре
addButton.Click + = AddClick
События и интерфейсы:
События могут быть членами интерфейса
При имплементации события интерфейса для него могут быть реализованы специфичные add и remove методы
В отличии от свойств, при реализации события методы add и remove не обязательны
Интерфейсы, события, делегаты:
В .NET поведение «обратного вызова» (callback) может быть реализовано через интерфейсы, делегаты или события.
когда использовать интерфейсы?
- когда объект предоставляет сов-сть многих callback методов
3. события использовать
- когда разрабатывается компонент, который должен извещать об изменениях
4. делегаты использовать
- имеется единичный callback метод, который не связан с компонентной моделью .NET
Управление исключениями
Заменяет процедурно-ориентированный подход, при котором любая функция возвращает код ошибки
Упрощает написание и поддержку программного кода
Проблемные случаи обрабатываются намного лучше
Обработка исключений:
- В с# исключения могут быть обработаны программной конструкцией try {} catch {}
- catch может иметь несколько путей соответственно для различных исключений
- если error нет то catch не вызывается
- Большая часть стандартных методов выполняет генерацию исключений при проблемной ситуации
Класс System.Exception:
- Является базовым классом для всех исключений в CLR
- содержит информацию о наступившей ошибке или другой ситуации:
Message – текстовое описание ошибки
StackTrace – визуализация
Source- источник ошибки
Алгоритм работы оператора try:
условия обнаружения (catch) проверяется последовательно
в итоге одно из условий всегда удовлетворяется (если список условий не пуст)
имя параметра exeption в условии обнаружения можно опустить
тип exeption должен быть выводим из System.Exeption
в случае отсутствия параметра exeption подраз-ся System.Exeption
Использование исключений
Генерация исключений (throwing):
имеет цель уведомить вызываемый код при возникновении проблемы
исполняет в случае наступления ошибки или др. ситуации
при возникновении прекращается исполнение программы и обходит стек на достижение catch блока для соответствующего исключения
в C# вызывается оператором throw
обычно создаётся объект, наследник класса System.Exeption, в котором описана проблема
в catch блоке вызываемое исключение может быть обработано
Собственные классы исключений:
В .NET программист может описать собственный класс исключений и создать иерархию классов
такая возможность лучше при управлении ошибками и др. ситуациями
для описания собственного исключения:
наследник класса System.ApplicationExeption
создать подходящий конструктор
можно добавить дополнительные свойства, дающие представление о проблеме
Конструкция try- finally:
выполняется в любом случае
используют для исполнения очищаемого кода, освобождения ресурсов
Алгоритм работы оператора try:
условия обнаружения (catch) проверяется последовательно
в итоге одно из условий всегда удовлетворяется (если список условий не пуст)
имя параметра exeption в условии обнаружения можно опустить
тип exeption должен быть выводим из System.Exeption
в случае отсутствия параметра exeption подраз-ся System.Exeption
Компонентное программирование в .NET Framework
Компоненты это:
независимые повторно используемые и типизируемые модули
в целом более крупные, чем объект
могут содержать множественные классы
независимы от языка реализации
Сравнение ООП и КОП:
1)Основные понятия Ооп
класс
интерфейс
2)основные понятия КОП
свойства (property)
события (event)
сборка (assembly)
Модели КОП:
Component object model (com) – для конкретизации и использования компонента внутри процесса, между процессами и между компьютерами. Основа для Actuve X, OLE
Java beans- стандарт SunMicrosystem для компонентов (не является независимым от языка)
Corba- громоздкий IDL – интерфейс, сложность отображения одного языка в реализации другого.
Web- сервисы в .NET:
заменяют компонентный подход в среде Internet
программируемые компоненты приложений, доступные посредством стандартных Интернет-протоколов
центральная часть архитектуры .NET
распределяют функциональность по глобальной сети
строятся на существующих развивающихся стандартах
Преимущества КОП:
снижение стоимости ПО
возможность повторного использования
унификация обработки объектов различной природы
менее человекозависимый процесс создания ПО
строгое математическое основание (лямбда-счисление)
концепция универсальна и одинакова
Сборки и модули
Сборка – совокупность чего-либо.
Сборка – логическая единица развертывания приложения, содержащая манифест, метаданные, MSIL и необходимые ресурсы.
Сборки могут быть представлены в виде *.exe – файла или *.dll – файла.
Манифест- совокупность метаданных о компонентах сборки (версии, типы, зависимости…)
Метаданные – исчерпывающе описывают все типы, определённые в сборке: свойства, методы, аргументы…
Преимущества сборок:
устранение проблемы с библиотеками
имеют уникальный номер версии
несколько версий одной и той же сборки могут существовать и использоваться одновременно
решение проблемы инсталляции
Границы сборки:
граница безопасности
граница типов
область ссылок
границы версий
единица для разделения
элемент публикации
Манифест сборки:
Метаданные описывают сборку.
Метаданные содержат:
идентификацию: имя + версия + культура + собственник
список файлов
ссылочные сборки
предоставляют типы и ресурсы
извлекают права доступа
Идентификация сборки:
имя сборки (произвольная строка)
версия
содержит 4 идентификатора, которые разделены точкой Major. Minor. Build. Revision (т.е 2.0.1765.2)
использует CLR при version policy
собственник сборки (публичный ключ собств.)
культура (locate – сборки (REC766))
Сильно именованная сборка (служит для создания индивидуального идентификатора 1й сборки):
имя
версия
культура
хеш публичного ключа (public key token)
Только сильно именованная сборка может создаваться в GAC
Global Assembly Cache (GAC):
общий контейнер, где инсталлированы разделяющие сборки
возможно в GAC имеется 2 различные версии одной сборки
утилиты для администрирования:
Gacutie
Windows Shell Exeption
.NET Configuration Management Console
Модули:
одна сборка- совокупность файлов
все входят в один и тот же указанный модуль
один из них может содержать манифест сборки
модули содержат только приложения в которых нуждаются
модули могут быть и ресурсными файлами типа .jpg, .xls, .mab
VS.NET не может компилировать одну сборку в различные модули
Поиск сборки:
случаи в которых ищется сборка
при указании на вн. слабоименованную сборку (LateBinding)
приложение использует много сборок
при указании на сильноименованную сборку
при указании на часть сильноименованной сборки
процесс поиска называется Probing
Конфигурационные файлы:
App.exe.config используют:
для администрирования
для конфигурирования путей
для смены версии
вместо добавления записи в реестре (WinRegistry)
Шаблоны проектирования
Атрибуты
Применяются для описания вспомогательной информации к коду:
при компилировании записываются в метаданные
могут быть извлечены из метаданных и обработаны в различных инструментах
сущность класса, наследника от System.Attribute
можно использовать стандартные и собственные атрибуты
Атрибуты с объектами:
Соглашение об именовании .NET:
любые классы описывающие атрибуты должны завершаться на Attribute
при использовании атрибутов окончание Attribut можно опустить
При описании атрибута могут быть заданы параметры для конструктора со значением и публичного поля и свойства
В процедуре атрибут [Dll Import] требует от компилятора:
создать объект класса System.Runtime InteropServicesDll Import
в конструктор передаёт параметр со значением «user32.dll»
в публичное поле EnterPoint
Указания назначения:
для декларативного управления
для исполнения автоматизации объектов
для взаимодействия с дизайнером при создании новых компонентов
для разработки приложений ASP.net
для взаимодействия с неуправляемым кодом
применение в remoting – технологиях.