Выбрать главу

Глава 7. Интерфейсы и коллекции

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

Глава 8. Интерфейсы обратного вызова, делегаты и события

Цель главы 8 заключается в разъяснении типа делегата. Упрощенно говоря, делегат .NET – это шаблон, "указывающий" на методы в приложении. С помощью такого шаблона вы получаете возможность строить системы, в которых множество объектов могут быть связаны двусторонним обменом- После выяснения возможностей использования делегатов.NET (включая множество возможностей, появившихся с версией 2.0, – например, анонимные методы) в главе рассматривается ключевое слово C# event, которое используется для того, чтобы упростить процесс программирования с помощью делегатов.

Глава 9. Специальные приемы построения типов

Эта глава позволит вам глубже понять возможности языка программирования C# путем изучения более совершенных методов программирования. Вы узнаете, как использовать перегрузку операций и создавать пользовательские программы преобразования (явного или неявного), как строить индексаторы типов и работать c указателями C-типа в файле *.cs.

Глава 10. Обобщения

В свази с разработкой .NET 2.0 язык программирования C# был расширен с целью поддержки новой возможности CTS, связанной с так называемыми обобщениями (generics). Вы увидите, что программирование с помощью обобщений ускоряет процесс создания приложений и обеспечивает типовую безопасность. Здесь рассмотрены различные обобщенные типы из пространства имен System, Collections.Generic, а также показано, как строить свои собственные обобщенные методы и типы (как с ограничениями, так и без таковых).

Часть III. Программирование компоновочных блоков .NET

В этой части рассматривается формат компоновочных блоков .NET. Вы узнаете, как развернуть и сконфигурировать библиотеки программного кода .NET, и выясните внутреннюю структуру бинарного образа .NET. В этой же части объясняется роль атрибутов .NET и конструкция многопоточных приложений. В последних главах этой части рассматриваются низкоуровневые вопросы [такие как, например, объектный контекст), а также синтаксис и семантика CIL.

Глава 11. Компоновочные блоки .NET

С точки зрения высокоуровневого подхода, компоновочные блоки – это файлы *.dll или *.exe. Но такая интерпретация компоновочных блоков .NET очень далека от "исчерпывающей". Вы узнаете, чем отличаются одномодульные и многомодульные компоновочные блоки и как строятся и инсталлируются такие объекты. Вы научитесь конфигурировать приватные и общедоступные компоновочные блоки, используя для этого XML-файлы *.config и компоновочные блоки политики поставщика. По ходу дела будут выяснены внутренняя структура GAC (Global Assembly Cache – глобальный кэш компоновочных блоков) и роль утилиты конфигурации .NET Framework 2.0.

Глава 12. Отображение типов, динамическое связывание и программирование с помощью атрибутов

В главе 12 изучение компоновочных блоков .NET продолжается – здесь рассматривается процесс обнаружения типов в среде выполнения с помощью пространства имен System.Reflection. С помощью этих типов можно строить приложения, способные читать метаданные компоновочных блоков "на лету". Вы узнаете, как динамически активизировать и обрабатывать типы во время выполнения программы, используя динамическое связывание. Здесь же исследуется роль атрибутов .NET (как стандартных, так и создаваемых программистом). Чтобы иллюстрировать возможности применения обсуждавшихся подходов, в конце главы рассматривается конструкция расширяемого приложения Windows Forms.

Глава 13. Процессы, домены приложений, контексты и хосты CLR

Здесь выполняется более глубокий анализ структуры загруженного выполняемого файла .NET. Главная цель – иллюстрация взаимосвязи между процессами, доменами приложений и границами контекстов. Определив эти объекты, вы сможете понять, как обслуживается CLR в рамках операционной системы Windows, и расширить свои знания о mscoree.dll. Представленная здесь информация может оказаться очень полезной при освоении материала главы 14.

Глава 14. Создание многопоточных приложений

В этой главе объясняется, как строить многопоточные приложения, и иллюстрируется ряд приемов, которые вы можете использовать для создания программного кода, безопасного с точки зрения многопоточных приложений. В начале главы снова обсуждается тип делегата .NET, и это делается с целью выяснения внутренних механизмов делегата, используемых для поддержки асинхронного вызова методов. Затем исследуются типы пространства имен System.Threading. Здесь обсуждается множество типов (Thread, ThreadStart, и т.п.), позволяющих очень просто создавать дополнительные потоки.