Язык программирования C# 2010 и платформа .NET 4

Эндрю Троелсен

Язык С# и платформа .NET за относительно недолгое время своего существования стали основными технологиями для разработки современного программного обеспечения. Как и ожидалось, в версии .NET 4 появилось множество новых API-интерфейсов в библиотеках базовых классов, а также синтаксических конструкций в языке С#. Например, теперь можно создавать методы С#, которые поддерживают именованные и необязательные параметры. Кроме того, появилась возможность разрешать типы полностью во время выполнения с использованием ключевого слова dynamic. В связи с добавлением в .NET новых API-интерфейсов в этом издании вы найдете следующие новые темы:

  • Среда Dynamic Language Runtime (DLR);
  • Библиотека Task Parallel Library (TPL, включая PLINQ);
  • Технология ADO.NET Entity Framework (а также LINQto EF);
  • Расширенное описание API-интерфейса Windows Presentation Foundation (WPF);
  • Улучшенная поддержка взаимодействия с COM.

Эта книга рассчитана в первую очередь на опытных разработчиков программного обеспечения и/или студентов, обучающихся вычислительной технике. Основная задача книги состоит в том, чтобы служить исчерпывающим руководством по языку программирования С# (включая рассмотрение принципов объектно-ориентированного программирования) и основным аспектам платформы .NET 4.

Издательство: Вильямс, 2011 г.

Смотрите также предыдущее издание книги: Язык программирования С# 2008 и платформа .NET 3.5

ISBN 978-5-8459-1682-2, 978-1-43-022549-2

Количество страниц: 1392.

Содержание книги «Язык программирования C# 2010 и платформа .NET 4»:

  • 31 Об авторе
  • 31 О техническом редакторе
  • 31 Благодарности
  • 32 Введение
    • 33 Автор и читатели — одна команда
    • 33 Краткий обзор содержания
    • 42 Исходный код примеров
    • 42 От издательства
  • 43 Часть I. Общие сведения о языке C# и платформе .NET
  • 44 Глава 1. Философия .NET
    • 44 Предыдущее состояние дел
      • 45 Подход с применением языка C и API-интерфейса Windows
      • 45 Подход с применением языка C++ и платформы MFC
      • 45 Подход с применением Visual Basic 6.0
      • 46 Подход с применением Java
      • 46 Подход с применением COM
      • 47 Сложность представления типов данных COM
    • 48 Решение .NET
    • 49 Главные компоненты платформы .NET (CLR, CTS и CLS)
      • 50 Роль библиотек базовых классов
    • 50 Что привносит язык C#
    • 52 Другие языки программирования с поддержкой .NET
      • 54 Жизнь в многоязычном окружении
    • 54 Что собой представляют сборки в .NET
      • 56 Однофайловые и многофайловые сборки
      • 56 Роль CIL
      • 58 Преимущества CIL
      • 58 Компиляция CIL-кода в инструкции, ориентированные на конкретную платформу
    • 59 Роль метаданных типов в .NET
    • 60 Роль манифеста сборки
    • 60 Что собой представляет общая система типов (CTS)
      • 61 Типы классов
      • 61 Типы интерфейсов
      • 62 Типы структур
      • 62 Типы перечислений
      • 63 Типы делегатов
      • 63 Члены типов
      • 63 Встроенные типы данных
    • 64 Что собой представляет общеязыковая спецификация (CLS)
      • 66 Забота о соответствии правилам CLS
    • 66 Что собой представляет общеязыковая исполняющая среда (CLR)
    • 67 Различия между сборками, пространствами имен и типами
      • 71 Роль корневого пространства Microsoft
      • 71 Получение доступа к пространствам имен программным образом
      • 73 Добавление ссылок на внешние сборки
    • 74 Изучение сборки с помощью утилиты ildasm.exe
      • 74 Просмотр CIL-кода
      • 74 Просмотр метаданных типов
      • 74 Просмотр метаданных сборки (манифеста)
    • 75 Изучение сборки с помощью утилиты Reflector
    • 76 Развертывание исполняющей среды .NET
      • 77 Клиентский профиль исполняющей среды .NET
    • 77 Не зависящая от платформы природа .NET
    • 79 Резюме
  • 80 Глава 2. Создание приложений на языке C#
    • 80 Роль комплекта .NET Framework 4.0 SDK
      • 81 Окно командной строки в Visual Studio 2010
    • 81 Создание приложений на C# с использованием csc.exe
      • 82 Указание целевых входных и выходных параметров
      • 84 Добавление ссылок на внешние сборки
      • 84 Добавление ссылок на несколько внешних сборок
      • 85 Компиляция нескольких файлов исходного кода
      • 85 Работа с ответными файлами в C#
    • 87 Создание приложений .NET с использованием Notepad++
    • 88 Создание приложений.NET с помощью SharpDevelop
      • 89 Создание простого тестового проекта
    • 90 Создание приложений .NET с использованием Visual C# 2010 Express
      • 91 Некоторые уникальные функциональные возможности Visual C# 2010 Express
    • 92 Создание приложений .NET с использованием Visual Studio 2010
      • 92 Некоторые уникальные функциональные возможности Visual Studio 2010
      • 93 Ориентирование на .NET Framework в диалоговом окне New Project
      • 93 Использование утилиты Solution Explorer
      • 95 Утилита Class View
      • 95 Утилита Object Browser
      • 96 Встроенная поддержка рефакторинга программного кода
      • 98 Возможности для расширения и окружения кода
      • 100 Утилита Class Designer
      • 102 Интегрируемая система документации .NET Framework 4.0
    • 104 Резюме
  • 105 Часть II. Главные конструкции программирования на C#
  • 106 Глава 3. Главные конструкции программирования на C#: часть I
    • 106 Разбор простой программы на C#
      • 108 Варианты метода Main()
      • 109 Спецификация кода ошибки в приложении
      • 110 Обработка аргументов командной строки
      • 111 Указание аргументов командной строки в Visual Studio 2010
    • 112 Интересное отклонение от темы: некоторые дополнительные члены класса System.Environment
    • 113 Класс System.Console
      • 114 Базовый ввод-вывод с помощью класса Console
      • 115 Форматирование вывода, отображаемого в окне консоли
      • 116 Форматирование числовых данных
      • 117 Форматирование числовых данных в приложениях, отличных от консольных
    • 117 Системные типы данных и их сокращенное обозначение в C#
      • 119 Объявление и инициализация переменных
      • 120 Внутренние типы данных и операция new
      • 121 Иерархия классов типов данных
      • 123 Члены числовых типов данных
      • 123 Члены System.Boolean
      • 124 Члены System.Char
      • 125 Синтаксический разбор значений из строковых данных
      • 125 Типы System.DateTime и System.TimeSpan
      • 126 Пространство имен System.Numerics в .NET 4.0
    • 127 Работа со строковыми данными
      • 128 Базовые операции манипулирования строками
      • 129 Конкатенация строк
      • 130 Управляющие последовательности символов
      • 131 Определение дословных строк
      • 131 Строки и равенство
      • 132 Неизменная природа строк
      • 133 Тип System.Text.StringBuilder
    • 135 Сужающие и расширяющие преобразования типов данных
      • 137 Перехват сужающих преобразований данных
      • 139 Настройка проверки на предмет возникновения условий переполнения в масштабах проекта
      • 139 Ключевое слово unchecked
      • 140 Роль класса System.Convert
    • 140 Неявно типизированные локальные переменные
      • 142 Ограничения, связанные с неявно типизированными переменными
      • 143 Неявно типизированные данные являются строго типизированными
      • 144 Польза от неявно типизированных локальных переменных
    • 144 Итерационные конструкции в С#
      • 145 Цикл for
      • 145 Цикл foreach
      • 146 Использование var в конструкциях foreach
      • 146 Конструкции while и do/while
    • 147 Конструкции принятия решений и операции сравнения
      • 147 Оператор if/else
      • 148 Оператор switch
    • 149 Резюме
  • 150 Глава 4. Главные конструкции программирования на C#: часть II
    • 150 Методы и модификаторы параметров
      • 151 Стандартное поведение при передаче параметров
      • 152 Модификатор out
      • 153 Модификатор ref
      • 154 Модификатор params
      • 156 Определение необязательных параметров
      • 157 Вызов методов с использованием именованных параметров
      • 158 Перегрузка методов
    • 160 Массивы в C#
      • 161 Синтаксис инициализации массивов в C#
      • 162 Неявно типизированные локальные массивы
      • 163 Определение массива объектов
      • 163 Работа с многомерными массивами
      • 165 Использование массивов в качестве аргументов и возвращаемых значений
      • 165 Базовый класс System.Array
    • 167 Тип enum
      • 168 Управление базовым типом, используемым для хранения значений перечисления
      • 168 Объявление переменных типа перечислений
      • 169 Тип System.Enum
      • 170 Динамическое обнаружение пар «имя/значение» перечисления
    • 172 Типы структур
      • 173 Создание переменных типа структур
    • 174 Типы значения и ссылочные типы
      • 175 Типы значения, ссылочные типы и операция присваивания
      • 177 Типы значения, содержащие ссылочные типы
      • 178 Передача ссылочных типов по значению
      • 179 Передача ссылочных типов по ссылке
      • 180 Заключительные детали относительно типов значения и ссылочных типов
    • 181 Нулевые типы в C#
      • 183 Работа с нулевыми типами
      • 184 Операция ??
    • 184 Резюме
  • 185 Глава 5. Определение инкапсулированных типов классов
    • 185 Знакомство с типом класса C#
      • 187 Размещение объектов с помощью ключевого слова new
    • 188 Понятие конструктора
      • 188 Роль конструктора по умолчанию
      • 189 Определение специальных конструкторов
      • 190 Еще раз о конструкторе по умолчанию
    • 191 Роль ключевого слова this
      • 193 Построение цепочки вызовов конструкторов с использованием this
      • 195 Обзор потока конструктора
      • 196 Еще раз об необязательных аргументах
    • 197 Понятие ключевого слова static
      • 198 Определение статических методов
      • 198 Определение статических полей данных
      • 201 Определение статических конструкторов
      • 202 Определение статических классов
    • 203 Основы объектно-ориентированного программирования
      • 204 Роль инкапсуляции
      • 204 Роль наследования
      • 206 Роль полиморфизма
    • 207 Модификаторы доступа C#
      • 208 Модификаторы доступа по умолчанию
      • 208 Модификаторы доступа и вложенные типы
    • 209 Первый принцип: службы инкапсуляции C#
      • 210 Инкапсуляция с использованием традиционных методов доступа и изменения
      • 212 Инкапсуляция с использованием свойств .NET
      • 214 Использование свойств внутри определения класса
      • 215 Внутреннее представление свойств
      • 217 Управление уровнями видимости операторов get/set свойств
      • 218 Свойства, доступные только для чтения и только для записи
      • 218 Статические свойства
    • 219 Понятие автоматических свойств
      • 221 Взаимодействие с автоматическими свойствами
      • 221 Замечания относительно автоматических свойств и значений по умолчанию
    • 223 Понятие синтаксиса инициализации объектов
      • 224 Вызов специальных конструкторов с помощью синтаксиса инициализации
      • 225 Инициализация вложенных типов
    • 226 Работа с данными константных полей
      • 228 Понятие полей только для чтения
      • 228 Статические поля только для чтения
    • 229 Понятие частичных типов
    • 230 Резюме
  • 231 Глава 6. Понятия наследования и полиморфизма
    • 231 Базовый механизм наследования
      • 232 Указание родительского класса для существующего класса
      • 234 О множественном наследовании
      • 234 Ключевое слово sealed
    • 235 Изменение диаграмм классов Visual Studio
    • 236 Второй принцип ООП: подробности о наследовании
      • 238 Управление созданием базового класса с помощью ключевого слова base
      • 240 Хранение фамильных тайн: ключевое слово protected
      • 241 Добавление запечатанного класса
    • 242 Реализация модели включения/делегации
      • 243 Определения вложенных типов
    • 245 Третий принцип ООП: поддержка полиморфизма в C#
      • 245 Ключевые слова virtual и override
      • 247 Переопределение виртуальных членов в Visual Studio 2010
      • 248 Запечатывание виртуальных членов
      • 249 Абстрактные классы
      • 250 Полиморфный интерфейс
      • 253 Сокрытие членов
    • 255 Правила приведения к базовому и производному классу
      • 257 Ключевое слово as
      • 257 Ключевое слово is
    • 258 Родительский главный класс System.Object
      • 261 Переопределение System.Object.ToString()
      • 261 Переопределение System.Object.Equals()
      • 262 Переопределение System.Object.GetHashCode()
      • 263 Тестирование модифицированного класса Person
      • 264 Статические члены System.Object
    • 264 Резюме
  • 265 Глава 7. Структурированная обработка исключений
    • 265 Ода ошибкам и исключениям
    • 266 Роль обработки исключений в .NET
      • 267 Составляющие процесса обработки исключений в .NET
      • 268 Базовый класс System.Exception
    • 269 Простейший пример
      • 271 Генерация общего исключения
      • 272 Перехват исключений
    • 273 Конфигурирование состояния исключения
      • 273 Свойство TargetSite
      • 274 Свойство StackTrace
      • 275 Свойство HelpLink
      • 275 Свойство Data
    • 277 Исключения уровня системы (System.SystemException)
    • 278 Исключения уровня приложения (System.ApplicationException)
      • 278 Создание специальных исключений, способ первый
      • 280 Создание специальных исключений, способ второй
      • 281 Создание специальных исключений, способ третий
    • 282 Обработка многочисленных исключений
      • 284 Общие операторы catch
      • 285 Передача исключений
      • 286 Внутренние исключения
    • 287 Блок finally
    • 287 Какие исключения могут выдавать методы
    • 288 К чему приводят необрабатываемые исключения
    • 289 Отладка необработанных исключений с помощью Visual Studio
    • 290 Несколько слов об исключениях, связанных с поврежденным состоянием
    • 291 Резюме
  • 292 Глава 8. Время жизни объектов
    • 292 Классы, объекты и ссылки
    • 293 Базовые сведения о времени жизни объектов
      • 294 CIL-код, генерируемый для ключевого слова new
      • 296 Установка объектных ссылок в null
    • 297 Роль корневых элементов приложения
    • 298 Поколения объектов
    • 299 Параллельная сборка мусора в версиях .NET 1.0 — .NET 3.5
      • 300 Фоновая сборка мусора в версии .NET 4.0
    • 300 Тип System.GC
      • 302 Принудительная активизация сборки мусора
    • 304 Создание финализируемых объектов
      • 305 Переопределение System.Object.Finalize()
      • 307 Описание процесса финализации
    • 307 Создание высвобождаемых объектов
      • 310 Повторное использование ключевого слова using в C#
    • 311 Создание финализируемых и высвобождаемых типов
      • 312 Формализованный шаблон очистки
    • 314 Отложенная инициализация объектов
      • 317 Настройка процесса создания данных Lazy<>
    • 318 Резюме
  • 319 Часть III. Дополнительные конструкции программирования на C#
  • 320 Глава 9. Работа с интерфейсами
    • 320 Что собой представляют типы интерфейсов
      • 321 Сравнение интерфейсов и абстрактных базовых классов
    • 324 Определение специальных интерфейсов
    • 326 Реализация интерфейса
    • 328 Вызов членов интерфейса на уровне объектов
      • 329 Получение ссылок на интерфейсы с помощью ключевого слова as
      • 329 Получение ссылок на интерфейсы с помощью ключевого слова is
    • 330 Использование интерфейсов в качестве параметров
    • 332 Использование интерфейсов в качестве возвращаемых значений
    • 332 Массивы типов интерфейсов
    • 333 Реализация интерфейсов с помощью Visual Studio 2010
    • 334 Устранение конфликтов на уровне имен за счет реализации интерфейсов явным образом
    • 337 Проектирование иерархий интерфейсов
      • 338 Множественное наследование в случае типов интерфейсов
    • 340 Создание перечислимых типов (IEnumerable и IEnumerator)
      • 343 Создание методов итератора с помощью ключевого слова yield
      • 344 Создание именованного итератора
      • 345 Внутреннее представление метода итератора
    • 346 Создание клонируемых объектов (ICloneable)
      • 348 Более сложный пример клонирования
    • 350 Создание сравнимых объектов (IComparable)
      • 353 Указание множества критериев для сортировки (IComparer)
      • 354 Использование специальных свойств и специальных типов для сортировки
    • 355 Резюме
  • 356 Глава 10. Обобщения
    • 356 Проблемы, связанные с необобщенными коллекциями
      • 358 Проблема производительности
      • 362 Проблемы с безопасностью типов
    • 365 Роль параметров обобщенных типов
      • 366 Указание параметров типа для обобщенных классов и структур
      • 367 Указание параметров типа для обобщенных членов
      • 367 Указание параметров типов для обобщенных интерфейсов
    • 369 Пространство имен System.Collections.Generic
      • 370 Синтаксис инициализации коллекций
      • 371 Работа с классом List<T>
      • 373 Работа с классом Stack<T>
      • 374 Работа с классом Queue<T>
      • 375 Работа с классом SortedSet<T>
    • 376 Создание специальных обобщенных методов
      • 378 Выведение параметра типа
    • 379 Создание специальных обобщенных структур и классов
      • 380 Ключевое слово default в обобщенном коде
      • 381 Обобщенные базовые классы
    • 382 Ограничение параметров типа
      • 383 Примеры использования ключевого слова where
      • 384 Недостаток ограничений операций
    • 385 Резюме
  • 386 Глава 11. Делегаты, события и лямбда-выражения
    • 386 Понятие типа делегата .NET
    • 387 Определение типа делегата в C#
    • 389 Базовые классы System.MulticastDelegate и System.Delegate
    • 391 Простейший пример делегата
      • 392 Исследование объекта делегата
    • 393 Отправка уведомлений о состоянии объекта с использованием делегатов
      • 396 Включение группового вызова
      • 397 Удаление целей из списка вызовов делегата
    • 398 Синтаксис групповых преобразований методов
    • 400 Понятие ковариантности делегатов
    • 402 Понятие обобщенных делегатов
      • 403 Эмуляция обобщенных делегатов без обобщений
    • 404 Понятие событий C#
      • 405 Ключевое слово event
      • 406 «За кулисами» событий
      • 407 Прослушивание входящих событий
      • 408 Упрощенная регистрация событий с использованием Visual Studio 2010
      • 409 Создание специальных аргументов событий
    • 410 Обобщенный делегат EventHandler<T>
    • 411 Понятие анонимных методов C#
      • 413 Доступ к локальным переменным
    • 413 Понятие лямбда-выражений
      • 416 Анализ лямбда-выражения
      • 417 Обработка аргументов внутри множества операторов
      • 418 Лямбда-выражения с несколькими параметрами и без параметров
      • 419 Усовершенствование примера PrimAndProperCarEvents за счет использования лямбда-выражений
    • 419 Резюме
  • 421 Глава 12. Расширенные средства языка C#
    • 421 Понятие методов-индексаторов
      • 423 Индексация данных с использованием строковых значений
      • 424 Перегрузка методов-индексаторов
      • 425 Многомерные индексаторы
      • 425 Определения индексаторов в интерфейсных типах
    • 426 Понятие перегрузки операций
      • 427 Перегрузка бинарных операций
      • 429 А как насчет операций += и -=?
      • 429 Перегрузка унарных операций
      • 430 Перегрузка операций эквивалентности
      • 431 Перегрузка операций сравнения
      • 432 Внутреннее представление перегруженных операций
      • 433 Финальные соображения относительно перегрузки операций
    • 434 Понятие преобразований пользовательских типов
      • 434 Числовые преобразования
      • 434 Преобразования между связанными типами классов
      • 435 Создание специальных процедур преобразования
      • 437 Дополнительные явные преобразования типа Square
      • 438 Определение процедур неявного преобразования
      • 439 Внутреннее представление процедур пользовательских преобразований
      • 440 Понятие расширяющих методов
      • 448 Понятие частичных методов
      • 450 Понятие анонимных типов
      • 454 Анонимные типы, содержащие другие анонимные типы
    • 455 Работа с типами указателей
      • 456 Ключевое слово unsafe
      • 458 Работа с операциями * и &
      • 459 Небезопасная и безопасная функция обмена значений
      • 459 Доступ к полям через указатели (операция ->)
      • 460 Ключевое слово stackalloc
      • 460 Закрепление типа ключевым словом fixed
      • 461 Ключевое слово sizeof
    • 462 Резюме
  • 463 Глава 13. LINQ to Objects
    • 463 Программные конструкции, специфичные для LINQ
      • 464 Неявная типизация локальных переменных
      • 464 Синтаксис инициализации объектов и коллекций
      • 465 Лямбда-выражения
      • 466 Расширяющие методы
      • 466 Анонимные типы
    • 467 Роль LINQ
      • 468 Выражения LINQ строго типизированы
      • 468 Основные сборки LINQ
    • 469 Применение запросов LINQ к элементарным массивам
      • 470 Решение без использования LINQ
      • 471 Рефлексия результирующего набора LINQ
      • 472 LINQ и неявно типизированные локальные переменные
      • 473 LINQ и расширяющие методы
      • 474 Роль отложенного выполнения
      • 475 Роль немедленного выполнения
    • 475 Возврат результата запроса LINQ
      • 476 Возврат результатов LINQ через немедленное выполнение
    • 477 Применение запросов LINQ к объектам коллекций
      • 478 Доступ к содержащимся в контейнере подобъектам
      • 478 Применение запросов LINQ к необобщенным коллекциям
      • 479 Фильтрация данных с использованием OfType<T>()
    • 480 Исследование операций запросов LINQ
      • 481 Базовый синтаксис выборки
      • 482 Получение подмножества данных
      • 482 Проекция новых типов данных
      • 484 Получение счетчиков посредством Enumerable
      • 484 Обращение результирующих наборов
      • 484 Выражения сортировки
      • 485 LINQ как лучшее средство построения диаграмм
      • 486 Исключение дубликатов
      • 486 Агрегатные операции LINQ
    • 487 Внутреннее представление операторов запросов LINQ
      • 488 Построение выражений запросов с использованием операций запросов
      • 488 Построение выражений запросов с использованием типа Enumerable и лямбда-выражений
      • 490 Построение выражений запросов с использованием типа Enumerable и анонимных методов
      • 490 Построение выражений запросов с использованием типа Enumerable и низкоуровневых делегатов
    • 491 Резюме
  • 493 Часть IV. Программирование с использованием сборок .NET
  • 494 Глава 14. Конфигурирование сборок .NET
    • 494 Определение специальных пространств имен
      • 496 Устранение конфликтов на уровне имен за счет использования полностью уточненных имен
      • 497 Устранение конфликтов на уровне имен за счет использования псевдонимов
      • 498 Создание вложенных пространств имен
      • 499 Пространство имен, используемое по умолчанию в Visual Studio 2010
    • 500 Роль сборок .NET
      • 500 Сборки повышают возможность повторного использования кода
      • 501 Сборки определяют границы типов
      • 501 Сборки являются единицами, поддерживающими версии
      • 501 Сборки являются самоописываемыми
      • 501 Сборки поддаются конфигурированию
    • 502 Формат сборки .NET
      • 502 Заголовок файла Windows
      • 504 Заголовок файла CLR
      • 505 CIL-код, метаданные типов и манифест сборки
      • 505 Необязательные ресурсы сборки
      • 505 Однофайловые и многофайловые сборки
    • 506 Создание и использование однофайловой сборки
      • 510 Исследование манифеста
      • 512 Исследование CIL-кода
      • 512 Исследование метаданных типов
      • 513 Создание клиентского приложения на C#
      • 514 Создание клиентского приложения на Visual Basic
      • 515 Межъязыковое наследование в действии
    • 516 Создание и использование многофайловой сборки
      • 517 Исследование файла ufo.netmodule
      • 518 Исследование файла airvehicles.dll
      • 518 Использование многофайловой сборки
    • 519 Приватные сборки
      • 520 Идентификационные данные приватной сборки
      • 520 Процесс зондирования
      • 521 Конфигурирование приватных сборок
      • 522 Конфигурационные файлы и Visual Studio 2010
    • 524 Разделяемые сборки
      • 524 Строгие имена
      • 526 Генерирование строгих имен в командной строке
      • 528 Генерирование строгих имен с помощью Visual Studio 2010
      • 529 Установка сборок со строгими именами в GAC
      • 530 Просмотр содержимого GAC с помощью проводника Windows
    • 531 Использование разделяемой сборки
      • 532 Исследование манифеста SharedCarLibClient
    • 533 Конфигурирование разделяемых сборок
      • 533 Фиксация текущей версии разделяемой сборки
      • 533 Создание разделяемой сборки версии 2.0.0.0
      • 536 Динамическое перенаправление на конкретную версию разделяемой сборки
    • 537 Сборки политик издателя
      • 538 Отключение политик издателя
    • 538 Элемент <codeBase>
    • 540 Пространство имен System.Configuration
    • 541 Резюме
  • 542 Глава 15. Рефлексия типов, позднее связывание и программирование с использованием атрибутов
    • 542 Необходимость в метаданных типов
      • 543 Просмотр (части) метаданных перечисления EngineState
      • 544 Просмотр (части) метаданных типа Car
      • 546 Изучение блока TypeRef
      • 546 Просмотр метаданных самой сборки
      • 546 Просмотр метаданных внешних сборок, на которые имеются ссылки в текущей сборке
      • 547 Просмотр метаданных строковых литералов
    • 547 Рефлексия
      • 548 Класс System.Type
      • 549 Получение информации о типе с помощью System.Object.GetType()
      • 549 Получение информации о типе с помощью typeof()
      • 549 Получение информации о типе с помощью System.Type.GetType()
    • 550 Создание специальной программы для просмотра метаданных
      • 550 Рефлексия методов
      • 551 Рефлексия полей и свойств
      • 552 Рефлексия реализуемых интерфейсов
      • 552 Отображение различных дополнительных деталей
      • 552 Реализация метода Main()
      • 554 Рефлексия обобщенных типов
      • 554 Рефлексия параметров и возвращаемых значений методов
    • 556 Динамически загружаемые сборки
    • 558 Рефлексия разделяемых сборок
    • 560 Позднее связывание
      • 560 Класс System.Activator
      • 562 Вызов методов без параметров
      • 563 Вызов методов с параметрами
    • 564 Роль атрибутов .NET
      • 565 Потребители атрибутов
      • 565 Применение предопределенных атрибутов в C#
      • 567 Сокращенное обозначение атрибутов в C#
      • 567 Указание параметров конструктора для атрибутов
      • 567 Атрибут [Obsolete] в действии
    • 568 Создание специальных атрибутов
      • 569 Применение специальных атрибутов
      • 569 Синтаксис именованных свойств
      • 570 Ограничение использования атрибутов
    • 571 Атрибуты уровня сборки и модуля
      • 572 Файл AssemblyInfo.cs, генерируемый Visual Studio 2010
    • 572 Рефлексия атрибутов с использованием раннего связывания
    • 573 Рефлексия атрибутов с использованием позднего связывания
    • 575 Возможное применение на практике рефлексии, позднего связывания и специальных атрибутов
    • 576 Создание расширяемого приложения
      • 576 Создание сборки CommonSnappableTypes.dll
      • 577 Создание оснастки на C#
      • 577 Создание оснастки на Visual Basic
      • 578 Создание расширяемого приложения Windows Forms
    • 581 Резюме
  • 582 Глава 16. Процессы, домены приложений и контексты объектов
    • 582 Роль процесса Windows
      • 583 Роль потоков
    • 585 Взаимодействие с процессами в рамках платформы .NET
      • 587 Перечисление выполняющихся процессов
      • 588 Изучение конкретного процесса
      • 588 Изучение набора потоков процесса
      • 590 Изучение набора модулей процесса
      • 592 Запуск и останов процессов программным образом
      • 592 Управление запуском процесса с использованием класса ProcessStartInfo
    • 594 Домены приложений .NET
      • 594 Класс System.AppDomain
    • 596 Взаимодействие с используемым по умолчанию доменом приложения
      • 597 Перечисление загружаемых сборок
      • 598 Получение уведомлений о загрузке сборок
    • 599 Создание новых доменов приложений
      • 600 Загрузка сборок в специальные домены приложений
      • 601 Выгрузка доменов приложений программным образом
    • 602 Границы контекстов объектов
      • 603 Контекстно-свободные и контекстно-зависимые типы
      • 604 Определение контекстно-зависимого объекта
      • 604 Инспектирование контекста объекта
    • 606 Итоговые сведения о процессах, доменах приложений и контекстах
    • 606 Резюме
  • 607 Глава 17. Язык CIL и роль динамических сборок
    • 607 Причины для изучения грамматики языка CIL
    • 608 Директивы, атрибуты и коды операций в CIL
      • 609 Роль директив CIL
      • 609 Роль атрибутов CIL
      • 609 Роль кодов операций CIL
      • 609 Разница между кодами операций и их мнемоническими эквивалентами в CIL
    • 610 Помещение и извлечение данных из стека в CIL
    • 612 Двунаправленное проектирование
      • 615 Роль меток в коде CIL
      • 616 Взаимодействие с CIL: модификация файла *.il
      • 617 Компиляция CIL-кода с помощью ilasm.exe
      • 618 Создание CIL-кода с помощью SharpDevelop
      • 619 Роль peverify.exe
    • 619 Использование директив и атрибутов в CIL
      • 619 Добавление ссылок на внешние сборки в CIL
      • 620 Определение текущей сборки в CIL
      • 620 Определение пространств имен в CIL
      • 621 Определение типов классов в CIL
      • 622 Определение и реализация интерфейсов в CIL
      • 623 Определение структур в CIL
      • 623 Определение перечислений в CIL
      • 623 Определение обобщений в CIL
      • 624 Компиляция файла CILTypes.il
    • 625 Соответствия между типами данных в библиотеке базовых классов .NET, C# и CIL
    • 626 Определение членов типов в CIL
      • 626 Определение полей данных в CIL
      • 627 Определение конструкторов для типов в CIL
      • 627 Определение свойств в CIL
      • 628 Определение параметров членов
    • 628 Изучение кодов операций в CIL
      • 631 Директива .maxstack
      • 631 Объявление локальных переменных в CIL
      • 632 Отображение параметров на локальные переменные в CIL
      • 633 Скрытая ссылка this
      • 633 Представление итерационных конструкций в CIL
    • 634 Создание сборки .NET на CIL
      • 634 Создание CILCars.dll
      • 637 Создание CILCarClient.exe
    • 638 Динамические сборки
      • 639 Пространство имен System.Reflection.Emit
      • 640 Роль типа System.Reflection.Emit.ILGenerator
      • 641 Создание динамической сборки
      • 642 Генерация сборки и набора модулей
      • 643 Роль типа ModuleBuilder
      • 644 Генерация типа HelloClass и принадлежащей ему строковой переменной
      • 645 Генерация конструкторов
      • 646 Генерация метода SayHello()
      • 646 Использование динамически сгенерированной сборки
    • 647 Резюме
  • 648 Глава 18. Динамические типы и исполняющая среда динамического языка
    • 648 Роль ключевого слова C# dynamic
      • 650 Вызов членов на динамически объявленных данных
      • 651 Роль сборки Microsoft.CSharp.dll
      • 652 Область применения ключевого слова dynamic
      • 653 Ограничения ключевого слова dynamic
      • 653 Практическое применение ключевого слова dynamic
      • 654 Роль исполняющей среды динамического языка (DLR)
      • 654 Роль деревьев выражений
      • 655 Роль пространства имен System.Dynamic
      • 655 Динамический поиск в деревьях выражений во время выполнения
    • 656 Упрощение вызовов позднего связывания с использованием динамических типов
      • 657 Использование ключевого слова dynamic для передачи аргументов
      • 659 Упрощение взаимодействия с COM посредством динамических данных
      • 660 Роль первичных сборок взаимодействия
      • 661 Встраивание метаданных взаимодействия
      • 661 Общие сложности взаимодействия с COM
    • 662 Взаимодействие с COM с использованием средств языка C# 4.0
      • 666 Взаимодействие с COM без использования средств языка C# 4.0
    • 667 Резюме
  • 669 Часть V. Введение в библиотеки базовых классов .NET
  • 670 Глава 19. Многопоточность и параллельное программирование
    • 670 Отношения между процессом, доменом приложения, контекстом и потоком
      • 671 Проблема параллелизма
      • 672 Роль синхронизации потоков
    • 672 Краткий обзор делегатов .NET
    • 674 Асинхронная природа делегатов
      • 675 Методы BeginInvoke() и EndInvoke()
      • 675 Интерфейс System.IAsyncResult
    • 676 Асинхронный вызов метода
      • 676 Синхронизация вызывающего потока
      • 678 Роль делегата AsyncCallback
      • 679 Роль класса AsyncResult
      • 680 Передача и прием специальных данных состояния
    • 681 Пространство имен System.Threading
    • 682 Класс System.Threading.Thread
      • 683 Получение статистики о текущем потоке
      • 684 Свойство Name
      • 684 Свойство Priority
    • 685 Программное создание вторичных потоков
      • 685 Работа с делегатом ThreadStart
      • 687 Работа с делегатом ParametrizedThreadStart
      • 688 Класс AutoResetEvent
      • 689 Потоки переднего плана и фоновые потоки
    • 690 Пример проблемы, связанной с параллелизмом
      • 692 Синхронизация с использованием ключевого слова C# lock
      • 694 Синхронизация с использованием типа System.Threading.Monitor
      • 695 Синхронизация с использованием типа System.Threading.Interlocked
      • 696 Синхронизация с использованием атрибута [Synchronization]
    • 697 Программирование с использованием обратных вызовов Timer
    • 698 Пул потоков CLR
    • 700 Параллельное программирование на платформе .NET
      • 700 Интерфейс Task Parallel Library API
      • 701 Роль класса Parallel
      • 702 Понятие параллелизма данных
      • 703 Класс Task
      • 704 Обработка запроса на отмену
      • 705 Понятие параллелизма задач
    • 708 Запросы параллельного LINQ (PLINQ)
      • 709 Выполнение запроса PLINQ
      • 709 Отмена запроса PLINQ
    • 710 Резюме
  • 711 Глава 20. Файловый ввод-вывод и сериализация объектов
    • 711 Исследование пространства имен System.IO
    • 712 Классы Directory (DirectoryInfo) и File (FileInfo)
      • 713 Абстрактный базовый класс FileSystemInfo
    • 714 Работа с типом DirectoryInfo
      • 715 Перечисление файлов с помощью типа DirectoryInfo
      • 716 Создание подкаталогов с помощью типа DirectoryInfo
    • 717 Работа с типом Directory
    • 717 Работа с типом DriveInfo
    • 719 Работа с классом FileInfo
      • 719 Метод FileInfo.Create()
      • 720 Метод FileInfo.Open()
      • 721 Методы FileOpen.OpenRead() и FileInfo.OpenWrite()
      • 722 Метод FileInfo.OpenText()
      • 722 Методы FileInfo.CreateText() и FileInfo.AppendText()
    • 722 Работа с типом File
      • 723 Дополнительные члены File
    • 724 Абстрактный класс Stream
      • 725 Работа с классом FileStream
    • 726 Работа с классами StreamWriter и StreamReader
      • 727 Запись в текстовый файл
      • 728 Чтение из текстового файла
      • 729 Прямое создание экземпляров классов StreamWriter/StreamReader
    • 730 Работа с классами StringWriter и StringReader
    • 731 Работа с классами BinaryWriter и BinaryReader
    • 732 Программное отслеживание файлов
    • 734 Понятие сериализации объектов
      • 736 Роль графов объектов
    • 737 Конфигурирование объектов для сериализации
      • 737 Определение сериализуемых типов
      • 738 Общедоступные поля, приватные поля и общедоступные свойства
    • 738 Выбор форматера сериализации
      • 739 Интерфейсы IFormatter и IRemotingFormatter
      • 740 Точность типов среди форматеров
    • 741 Сериализация объектов с использованием BinaryFormatter
      • 742 Десериализация объектов с использованием BinaryFormatter
    • 743 Сериализация объектов с использованием SoapFormatter
    • 743 Сериализация объектов с использованием XmlSerializer
      • 744 Управление генерацией данных XML
    • 746 Сериализация коллекций объектов
    • 747 Настройка процессов сериализации SOAP и двоичной сериализации
      • 748 Углубленный взгляд на сериализацию объектов
      • 749 Настройка сериализации с использованием интерфейса ISerializable
      • 751 Настройка сериализации с использованием атрибутов
    • 752 Резюме
  • 754 Глава 21. ADO.NET, часть I: подключенный уровень
    • 754 Высокоуровневое определение ADO.NET
      • 755 Три стороны ADO.NET
    • 756 Поставщики данных ADO.NET
      • 757 Поставщики данных ADO.NET от Microsoft
      • 759 О сборке System.Data.OracleClient.dll
      • 759 Получение сторонних поставщиков данных ADO.NET
    • 759 Дополнительные пространства имен ADO.NET
    • 760 Типы из пространства имен System.Data
      • 761 Роль интерфейса IDbConnection
      • 762 Роль интерфейса IDbTransaction
      • 762 Роль интерфейса IDbCommand
      • 762 Роль интерфейсов IDbDataParameter и IDataParameter
      • 763 Роль интерфейсов IDbDataAdapter и IDataAdapter
      • 763 Роль интерфейсов IDataReader и IDataRecord
    • 764 Абстрагирование поставщиков данных с помощью интерфейсов
      • 766 Повышение гибкости с помощью конфигурационных файлов приложения
    • 767 Создание базы данных AutoLot
      • 767 Создание таблицы Inventory
      • 769 Создание хранимой процедуры GetPetName()
      • 770 Создание таблиц Customers и Orders
      • 772 Визуальное создание отношений между таблицами
    • 772 Модель генератора поставщиков данных ADO.NET
      • 774 Полный пример генератора поставщиков данных
      • 776 Возможные трудности с моделью генератора поставщиков
      • 777 Элемент <connectionStrings>
    • 778 Подключенный уровень ADO.NET
      • 779 Работа с объектами подключения
      • 781 Работа с объектами ConnectionStringBuilder
      • 782 Работа с объектами команд
    • 783 Работа с объектами чтения данных
      • 784 Получение множественных результатов с помощью объекта чтения данных
    • 785 Создание повторно используемой библиотеки доступа к данным
      • 786 Добавление логики подключения
      • 787 Добавление логики вставки
      • 788 Добавление логики удаления
      • 788 Добавление логики изменения
      • 789 Добавление логики выборки
      • 790 Работа с параметризованными объектами команд
      • 792 Выполнение хранимой процедуры
    • 793 Создание консольного пользовательского интерфейса
      • 794 Реализация метода Main()
      • 795 Реализация метода ShowInstructions()
      • 795 Реализация метода ListInventory()
      • 796 Реализация метода DeleteCar()
      • 797 Реализация метода InsertNewCar()
      • 797 Реализация метода UpdateCarPetName()
      • 798 Реализация метода LookUpPetName()
    • 799 Транзакции баз данных
      • 800 Основные члены объекта транзакции ADO.NET
      • 800 Добавление таблицы CreditRisks в базу данных AutoLot
      • 801 Добавление метода транзакции в InventoryDAL
      • 802 Тестирование транзакции в нашей базе данных
    • 803 Резюме
  • 804 Глава 22. ADO.NET, часть II: автономный уровень
    • 804 Знакомство с автономным уровнем ADO.NET
    • 805 Роль объектов DataSet
      • 806 Основные свойства класса DataSet
      • 807 Основные методы класса DataSet
      • 807 Создание DataSet
    • 808 Работа с объектами DataColumn
      • 809 Создание объекта DataColumn
      • 810 Включение автоинкрементных полей
      • 810 Добавление объектов DataColumn в DataTable
    • 810 Работа с объектами DataRow
      • 812 Свойство RowState
      • 813 Свойство DataRowVersion
    • 814 Работа с объектами DataTable
      • 815 Вставка объектов DataTable в DataSet
      • 815 Получение данных из объекта DataSet
      • 816 Обработка данных из DataTable с помощью объектов DataTableReader
      • 817 Сериализация объектов DataTable и DataSet в формате XML
      • 818 Сериализация объектов DataTable и DataSet в двоичном формате
    • 819 Привязка объектов DataTable к графическим интерфейсам Windows Forms
      • 820 Заполнение DataTable из обобщенного List<T>
      • 822 Удаление строк из DataTable
      • 823 Выборка строк с помощью фильтра
      • 826 Изменение строк в DataTable
      • 826 Работа с типом DataView
    • 828 Работа с адаптерами данных
      • 829 Простой пример адаптера данных
      • 829 Замена имен из базы данных более понятными названиями
    • 830 Добавление в AutoLotDAL.dll возможности отключения
      • 831 Определение начального класса
      • 831 Настройка адаптера данных с помощью SqlCommandBuilder
      • 833 Реализация метода GetAllInventory()
      • 833 Реализация метода UpdateInventory()
      • 833 Установка номера версии
      • 833 Тестирование автономной функциональности
    • 834 Объекты DataSet для нескольких таблиц и взаимосвязь данных
      • 835 Подготовка адаптеров данных
      • 836 Создание отношений между таблицами
      • 837 Изменение таблиц базы данных
      • 837 Переходы между взаимосвязанными таблицами
    • 839 Средства конструктора баз данных в Windows Forms
      • 840 Визуальное проектирование элементов DataGridView
      • 843 Сгенерированный файл app.config
      • 843 Анализ строго типизированного DataSet
      • 845 Анализ строго типизированного DataTable
      • 845 Анализ строго типизированного DataRow
      • 845 Анализ строго типизированного адаптера данных
      • 846 Завершение приложения Windows Forms
    • 847 Выделение строго типизированного кода работы с базами данных в библиотеку классов
      • 848 Просмотр сгенерированного кода
      • 849 Выборка данных с помощью сгенерированного кода
      • 850 Вставка данных с помощью сгенерированного кода
      • 850 Удаление данных с помощью сгенерированного кода
      • 851 Вызов хранимой процедуры с помощью сгенерированного кода
    • 851 Программирование с помощью LINQ to DataSet
      • 853 Библиотека расширений DataSet
      • 853 Получение DataTable, совместимого с LINQ
      • 855 Метод расширения DataRowExtensions.Field<T>()
      • 855 Заполнение новых объектов DataTable с помощью LINQ-запросов
    • 856 Резюме
  • 857 Глава 23. ADO.NET, часть III: Entity Framework
    • 857 Роль Entity Framework
      • 859 Роль сущностей
      • 860 Строительные блоки Entity Framework
      • 861 Роль служб объектов
      • 861 Роль клиента сущности
      • 863 Роль файла *.ed m x
      • 863 Роль классов ObjectContext и ObjectSet<T>
      • 865 Собираем все вместе
    • 866 Построение и анализ первой модели EDM
      • 866 Генерация файла *.edmx
      • 869 Изменение формы сущностных данных
      • 871 Просмотр отображений
      • 871 Просмотр данных сгенерированного файла *.ed m x
      • 873 Просмотр сгенерированного исходного кода
      • 875 Улучшение сгенерированного исходного кода
    • 875 Программирование с использованием концептуальной модели
      • 876 Удаление записи
      • 877 Обновление записи
      • 878 Запросы с помощью LINQ to Entities
      • 879 Запросы с помощью Entity SQL
      • 880 Работа с объектом EntityDataReader
    • 881 Проект AutoLotDAL версии 4.0, теперь с сущностями
      • 881 Отображение хранимой процедуры
      • 882 Роль навигационных свойств
      • 884 Использование навигационных свойств внутри запросов LINQ to Entity
      • 885 Вызов хранимой процедуры
    • 886 Привязка данных сущностей к графическим пользовательским интерфейсам Windows Forms
      • 888 Добавление кода привязки данных
    • 890 Резюме
  • 891 Глава 24. Введение в LINQ to XML
    • 891 История о двух API-интерфейсах XML
      • 893 Интерфейс LINQ to XML как лучшая модель DOM
      • 893 Синтаксис литералов Visual Basic как наилучший интерфейс LINQ to XML
    • 895 Члены пространства имен System.Xml.Linq
      • 895 Осевые методы LINQ to XML
      • 897 Избыточность XName (и XNamespace)
    • 898 Работа с XElement и XDocument
      • 899 Генерация документов из массивов и контейнеров
      • 901 Загрузка и разбор XML-содержимого
    • 901 Манипулирование XML-документом в памяти
      • 901 Построение пользовательского интерфейса приложения LINQ to XML
      • 902 Импорт файла Inventory.xml
      • 902 Определение вспомогательного класса LINQ to XML
      • 904 Оснащение пользовательского интерфейса вспомогательными методами
    • 905 Резюме
  • 906 Глава 25. Введение в Windows Communication Foundation
    • 906 API-интерфейсы распределенных вычислений
      • 907 Роль DCOM
      • 908 Роль служб COM+/Enterprise Services
      • 909 Роль MSMQ
      • 909 Роль .NET Remoting
      • 910 Роль веб-служб XML
      • 913 Именованные каналы, сокеты и P2P
    • 913 Роль WCF
      • 914 Обзор средств WCF
      • 914 Обзор архитектуры, ориентированной на службы
      • 915 WCF: итоги
    • 916 Исследование основных сборок WCF
    • 917 Шаблоны проектов WCF в Visual Studio
      • 918 Шаблон проекта WCF Service
    • 919 Базовая композиция приложения WCF
    • 920 Понятие ABC в WCF
      • 920 Понятие контрактов WCF
      • 921 Понятие привязок WCF
      • 924 Понятие адресов WCF
    • 925 Построение службы WCF
      • 926 Атрибут [ServiceContract]
      • 927 Атрибут [OperationContract]
      • 928 Служебные типы как контракты операций
    • 928 Хостинг службы WCF
      • 929 Установка ABC внутри файла App.config
      • 930 Кодирование с использованием типа ServiceHost
      • 930 Указание базового адреса
      • 932 Подробный анализ типа ServiceHost
      • 933 Подробный анализ элемента <system.serviceModel>
      • 934 Включение обмена метаданными
    • 936 Построение клиентского приложения WCF
      • 937 Генерация кода прокси с использованием svcutil.exe
      • 938 Генерация кода прокси с использованием Visual Studio 2010
      • 939 Конфигурирование привязки на основе TCP
    • 940 Упрощение конфигурационных настроек в WCF 4.0
      • 941 Конечные точки по умолчанию в WCF 4.0
      • 942 Предоставление одной службы WCF с использованием множества привязок
      • 943 Изменение установок для привязки WCF
      • 944 Конфигурация поведения MEX по умолчанию в WCF 4.0
      • 945 Обновление клиентского прокси и выбор привязки
    • 946 Использование шаблона проекта WCF Service Library
      • 947 Построение простой математической службы
      • 947 Тестирование службы WCF с помощью WcfTestClient.exe
      • 948 Изменение конфигурационных файлов с помощью SvcConfigEditor.exe
    • 949 Хостинг службы WCF в виде службы Windows
      • 950 Спецификация ABC в коде
      • 951 Включение MEX
      • 952 Создание программы установки для службы Windows
      • 953 Установка службы Windows
    • 954 Асинхронный вызов службы на стороне клиента
    • 955 Проектирование контрактов данных WCF
      • 956 Использование веб-ориентированного шаблона проекта WCF Service
      • 958 Реализация контракта службы
      • 959 Роль файла *.svc
      • 959 Содержимое файла Web.config
      • 960 Тестирование службы
    • 960 Резюме
  • 961 Глава 26. Введение в Windows Workflow Foundation 4.0
    • 962 Определение бизнес-процесса
      • 962 Роль WF 4.0
    • 963 Построение простого рабочего потока
      • 965 Просмотр полученного кода XAML
      • 967 Исполняющая среда WF 4.0
      • 967 Хостинг рабочего потока с использованием класса WorkflowInvoker
      • 970 Хостинг рабочего потока с использованием класса WorkflowApplication
      • 971 Переделка первого рабочего потока
    • 971 Знакомство с действиями Windows Workflow 4.0
      • 971 Действия потока управления
      • 972 Действия блок-схемы
      • 973 Действия обмена сообщениями
      • 973 Действия исполняющей среды и действия-примитивы
      • 974 Действия транзакций
      • 974 Действия над коллекциями и действия обработки ошибок
    • 975 Построение рабочего потока в виде блок-схемы
      • 975 Подключение действий к блок-схеме
      • 976 Работа с действием InvokeMethod
      • 977 Определение переменных уровня рабочего потока
      • 978 Работа с действием FlowDecision
      • 978 Работа с действием TerminateWorkflow
      • 979 Построение условия «true»
      • 979 Работа с действием ForEach<T>
      • 981 Завершение приложения
      • 982 Промежуточные итоги
    • 984 Изоляция рабочих потоков в выделенных библиотеках
      • 984 Определение начального проекта
      • 985 Импорт сборок и пространств имен
      • 986 Определение аргументов рабочего потока
      • 986 Определение переменных рабочего потока
      • 987 Работа с действием Assign
      • 987 Работа с действиями If и Switch
      • 988 Построение специального действия кода
    • 991 Использование библиотеки рабочего потока
      • 992 Получение выходного аргумента рабочего потока
    • 993 Резюме
  • 995 Часть VI. Построение настольных пользовательских приложений с помощью WPF
  • 996 Глава 27. Введение в Windows Presentation Foundation и XAML
    • 997 Мотивация, лежащая в основе WPF
      • 997 Унификация различных API-интерфейсов
      • 998 Обеспечение разделения ответственности через XAML
      • 998 Обеспечение оптимизированной модели визуализации
      • 999 Упрощение программирования сложных пользовательских интерфейсов
    • 1000 Различные варианты приложений WPF
      • 1000 Традиционные настольные приложения
      • 1001 WPF-приложения на основе навигации
      • 1002 Приложения XBAP
      • 1003 Отношения между WPF и Silverlight
    • 1004 Исследование сборок WPF
      • 1005 Роль класса Application
      • 1007 Роль класса Window
      • 1007 Роль класса System.Windows.Controls.ContentControl
      • 1008 Роль класса System.Windows.Controls.Control
      • 1009 Роль класса System.Windows.FrameworkElement
      • 1010 Роль класса System.Windows.UIElement
      • 1010 Роль класса System.Windows.Media.Visual
      • 1010 Роль класса System.Windows.DependencyObject
      • 1011 Роль класса System.Windows.Threading.DispatcherObject
    • 1011 Построение приложения WPF без XAML
      • 1013 Создание строго типизированного окна
      • 1013 Создание простого пользовательского интерфейса
      • 1015 Взаимодействие с данными уровня приложения
      • 1016 Обработка закрытия объекта Window
      • 1017 Перехват событий мыши
      • 1018 Перехват клавиатурных событий
    • 1019 Построение приложения WPF с использованием только XAML
      • 1020 Определение MainWindow в XAML
      • 1021 Определение объекта Application в XAML
      • 1022 Обработка файлов XAML с помощью msbuild.exe
    • 1023 Трансформация разметки в сборку .NET
      • 1024 Отображение XAML-данных окна на код C#
      • 1025 Роль BAML
      • 1026 Отображение XAML-данных приложения на код C#
      • 1027 Итоговые замечания о процессе трансформирования XAML в сборку
    • 1027 Синтаксис XAML для WPF
      • 1027 Введение в Kaxaml
      • 1029 Пространства имен XAML XML и «ключевые слова» XAML
      • 1031 Управление объявлениями классов и переменных-членов
      • 1032 Элементы XAML, атрибуты XAML и преобразователи типов
      • 1033 Понятие синтаксиса XAML «свойство-элемент»
      • 1034 Понятие присоединяемых свойств XAML
      • 1034 Понятие расширений разметки XAML
    • 1036 Построение приложений WPF с использованием файлов отделенного кода
      • 1036 Добавление файла кода для класса MainWindow
      • 1037 Добавление файла кода для класса MyApp
      • 1038 Обработка файлов кода с помощью msbuild.exe
    • 1038 Построение приложений WPF с использованием Visual Studio 2010
      • 1039 Шаблоны проектов WPF
      • 1039 Знакомство с инструментами визуального конструктора WPF
      • 1042 Проектирование графического интерфейса окна
      • 1044 Реализация события Loaded
      • 1045 Реализация события Click объекта Button
      • 1046 Реализация события Closed
      • 1046 Тестирование приложения
    • 1047 Резюме
  • 1048 Глава 28. Программирование с использованием элементов управления WPF
    • 1048 Обзор библиотеки элементов управления WPF
      • 1049 Работа с элементами управления WPF в Visual Studio 2010
      • 1051 Элементы управления Ink API
      • 1051 Элементы управления документами WPF
      • 1052 Общие диалоговые окна WPF
      • 1052 Подробные сведения находятся в документации
    • 1053 Управление компоновкой содержимого с использованием панелей
      • 1054 Позиционирование содержимого внутри панелей Canvas
      • 1056 Позиционирование содержимого внутри панелей WrapPanel
      • 1058 Позиционирование содержимого внутри панелей StackPanel
      • 1059 Позиционирование содержимого внутри панелей Grid
      • 1060 Позиционирование содержимого внутри панелей DockPanel
      • 1061 Включение прокрутки в типах панелей
    • 1062 Построение главного окна с использованием вложенных панелей
      • 1063 Построение системы меню
      • 1064 Построение панели инструментов
      • 1065 Построение строки состояния
      • 1065 Завершение дизайна пользовательского интерфейса
      • 1066 Реализация обработчиков событий MouseEnter/MouseLeave
      • 1066 Реализация логики проверки правописания
    • 1067 Понятие управляющих команд WPF
      • 1067 Внутренние объекты управляющих команд
      • 1068 Подключение команд к свойству Command
      • 1069 Подключение команд к произвольным действиям
      • 1071 Работа с командами Open и Save
    • 1072 Построение пользовательского интерфейса WPF с помощью Expression Blend
      • 1073 Ключевые аспекты IDE-среды Expression Blend
      • 1077 Использование элемента TabControl
    • 1079 Построение вкладки Ink API
      • 1080 Проектирование элемента ToolBar
      • 1082 Элемент управления RadioButton
      • 1084 Элемент управления InkCanvas
      • 1086 Элемент управления ComboBox
      • 1087 Сохранение, загрузка и очистка данных InkCanvas
    • 1088 Введение в интерфейс Documents API
      • 1088 Блочные элементы и встроенные элементы
      • 1089 Диспетчеры компоновки документа
    • 1089 Построение вкладки Documents
      • 1091 Наполнение FlowDocument с использованием Blend
      • 1091 Наполнение FlowDocument с помощью кода
      • 1093 Включение аннотаций и «клейких» заметок
      • 1094 Сохранение и загрузка потокового документа
    • 1095 Введение в модель привязки данных WPF
      • 1096 Построение вкладки Data Binding
      • 1096 Установка привязки данных с использованием Blend
      • 1097 Свойство DataContext
      • 1099 Преобразование данных с использованием IValueConverter
      • 1099 Установка привязок данных в коде
      • 1100 Построение вкладки DataGrid
    • 1102 Резюме
  • 1103 Глава 29. Службы визуализации графики WPF
    • 1103 Службы графической визуализации WPF
      • 1104 Опции графической визуализации WPF
    • 1105 Визуализация графических данных с использованием фигур
      • 1107 Добавление прямоугольников, эллипсов и линий на поверхность Canvas
      • 1110 Удаление прямоугольников, эллипсов и линий с поверхности Canvas
      • 1110 Работа с элементами Polyline и Polygon
      • 1111 Работа с элементом Path
    • 1115 Кисти и перья WPF
      • 1115 Конфигурирование кистей с использованием Visual Studio 2010
      • 1117 Конфигурирование кистей в коде
      • 1118 Конфигурирование перьев
    • 1118 Применение графических трансформаций
      • 1119 Первый взгляд на трансформации
      • 1120 Трансформация данных Canvas
    • 1122 Работа с фигурами в Expression Blend
      • 1122 Выбор фигуры для визуализации из палитры инструментов
      • 1123 Преобразование фигур в пути
      • 1123 Комбинирование фигур
      • 1123 Редакторы кистей и трансформаций
    • 1125 Визуализация графических данных с использованием рисунков и геометрий
      • 1126 Построение кисти DrawingBrush с использованием объектов Geometry
      • 1127 Рисование с помощью DrawingBrush
      • 1128 Включение типов Drawing в DrawingImage
    • 1128 Генерация сложной векторной графики с использованием Expression Design
      • 1129 Экспорт документа Expression Design в XAML
    • 1130 Визуализация графических данных с использованием визуального уровня
      • 1130 Базовый класс Visual и производные дочерние классы
      • 1131 Первый взгляд на класс DrawingVisual
      • 1133 Визуализация графических данных в специальном диспетчере компоновки
      • 1134 Реагирование на операции проверки попадания
    • 1136 Резюме
  • 1137 Глава 30. Ресурсы, анимация и стили WPF
    • 1137 Система ресурсов WPF
      • 1138 Работа с двоичными ресурсами
      • 1139 Программная загрузка изображения
    • 1142 Работа с объектными (логическими) ресурсами
      • 1143 Роль свойства Resources
      • 1143 Определение ресурсов уровня окна
      • 1145 Расширение разметки {StaticResource}
      • 1145 Изменение ресурса после извлечения
      • 1146 Расширение разметки {DynamicResource}
      • 1146 Ресурсы уровня приложения
      • 1147 Определение объединенных словарей ресурсов
      • 1149 Определение сборки из одних ресурсов
      • 1150 Извлечение ресурсов в Expression Blend
    • 1152 Службы анимации WPF
      • 1152 Роль классов анимации
      • 1153 Свойства To, From и By
      • 1154 Роль базового класса Timeline
      • 1154 Написание анимации в коде C#
      • 1155 Управление темпом анимации
      • 1156 Запуск в обратном порядке и циклическое выполнение анимации
    • 1157 Описание анимации в XAML
      • 1158 Роль раскадровки
      • 1158 Роль триггеров событий
      • 1159 Анимация с использованием дискретных ключевых кадров
    • 1160 Роль стилей WPF
      • 1160 Определение и применение стиля
      • 1161 Переопределение настроек стиля
      • 1161 Автоматическое применение стиля с помощью TargetType
      • 1162 Создание подклассов существующих стилей
      • 1163 Роль безымянных стилей
      • 1164 Определение стилей с триггерами
      • 1164 Определение стилей с множеством триггеров
      • 1165 Анимированные стили
      • 1165 Программное применение стилей
    • 1166 Генерация стилей с помощью Expression Blend
      • 1167 Работа с визуальными стилями по умолчанию
    • 1169 Резюме
  • 1170 Глава 31. Шаблоны элементов управления WPF и пользовательские элементы управления
    • 1170 Роль свойств зависимости
      • 1172 Проверка существующего свойства зависимости
      • 1175 Важные замечания относительно оболочек свойств CLR
    • 1176 Построение специального свойства зависимости
      • 1179 Добавление процедуры проверки достоверности данных
      • 1179 Реакция на изменение свойства
    • 1181 Маршрутизируемые события
      • 1182 Роль маршрутизируемых пузырьковых событий
      • 1182 Продолжение или прекращение пузырькового распространения
      • 1183 Роль маршрутизируемых туннелируемых событий
    • 1185 Логические деревья, визуальные деревья и шаблоны по умолчанию
      • 1185 Программный просмотр логического дерева
      • 1187 Программный просмотр визуального дерева
      • 1188 Программный просмотр шаблона по умолчанию для элемента управления
    • 1191 Построение специального шаблона элемента управления в Visual Studio 2010
      • 1192 Шаблоны как ресурсы
      • 1193 Включение визуальных подсказок с использованием триггеров
      • 1194 Роль расширения разметки {TemplateBinding}
      • 1196 Роль класса ContentPresenter
      • 1196 Включение шаблонов в стили
    • 1197 Построение специальных элементов UserControl с помощью Expression Blend
      • 1198 Создание проекта библиотеки UserControl
    • 1204 Создание WPF-приложения JackpotDeluxe
      • 1204 Извлечение UserControl из геометрических объектов
      • 1205 Роль визуальных состояний .NET 4.0
      • 1209 Завершение приложения JackpotDeluxe
    • 1212 Резюме
  • 1213 Часть VII. Построение веб-приложений с использованием ASP.NET
  • 1214 Глава 32. Построение веб-страниц ASP.NET
    • 1214 Роль протокола HTTP
      • 1215 Цикл запрос/ответ HTTP
      • 1215 HTTP — протокол без поддержки состояния
    • 1216 Веб-приложения и веб-серверы
      • 1216 Роль виртуальных каталогов IIS
      • 1217 Веб-сервер разработки ASP.NET
    • 1217 Роль языка HTML
      • 1218 Структура HTML-документа
      • 1219 Роль формы HTML
      • 1219 Инструменты визуального конструктора HTML в Visual Studio 2010
      • 1220 Построение формы HTML
    • 1221 Роль сценариев клиентской стороны
      • 1223 Пример сценария клиентской стороны
    • 1224 Обратная отправка веб-серверу
      • 1225 Обратные отправки в ASP.NET
    • 1225 Набор средств API-интерфейса ASP.NET
      • 1225 Основные средства ASP.NET 1.0–1.1
      • 1227 Основные средства ASP.NET 2.0
      • 1228 Основные средства ASP.NET 3.5 (и .NET 3.5 SP1)
      • 1228 Основные средства ASP.NET 4.0
    • 1229 Построение однофайловой веб-страницы ASP.NET
      • 1229 Ссылка на сборку AutoLotDAL.dll
      • 1230 Проектирование пользовательского интерфейса
      • 1231 Добавление логики доступа к данным
      • 1233 Роль директив ASP.NET
      • 1235 Анализ блока script
      • 1235 Анализ объявлений элементов управления ASP.NET
      • 1236 Цикл компиляции для однофайловых страниц
    • 1237 Построение веб-страницы ASP.NET с использованием файлов кода
      • 1239 Ссылка на сборку AutoLotDAL.dll
      • 1240 Обновление файла кода
      • 1240 Цикл компиляции многофайловых страниц
      • 1241 Отладка и трассировка страниц ASP.NET
    • 1242 Веб-сайты и веб-приложения ASP.NET
    • 1243 Структура каталогов веб-сайта ASP.NET
      • 1244 Ссылаемые сборки
      • 1244 Роль папки App_Code
    • 1245 Цепочка наследования типа Page
    • 1246 Взаимодействие с входящим запросом HTTP
      • 1247 Получение статистики браузера
      • 1248 Доступ к входным данным формы
      • 1248 Свойство IsPostBack
    • 1249 Взаимодействие с исходящим ответом HTTP
      • 1250 Выдача HTML-содержимого
      • 1250 Перенаправление пользователей
    • 1251 Жизненный цикл веб-страницы ASP.NET
      • 1252 Роль атрибута AutoEventWireup
      • 1253 Событие Error
    • 1254 Роль файла Web.config
      • 1255 Утилита администрирования веб-сайтов ASP.NET
    • 1256 Резюме
  • 1257 Глава 33. Веб-элементы управления, мастер-страницы и темы ASP.NET
    • 1257 Природа веб-элементов управления
      • 1258 Обработка событий серверной стороны
      • 1259 Свойство AutoPostBack
    • 1260 Базовые классы Control и WebControl
      • 1260 Перечисление содержащихся элементов управления
      • 1262 Динамическое добавление и удаление элементов управления
      • 1263 Взаимодействие с динамически созданными элементами управления
      • 1264 Функциональность базового класса WebControl
    • 1265 Основные категории веб-элементов управления ASP.NET
      • 1266 Краткая информация о System.Web.UI.HtmlControls
      • 1267 Документация по веб-элементам управления
    • 1268 Построение веб-сайта ASP.NET Cars
      • 1268 Работа с мастер-страницами
      • 1274 Определение страницы содержимого Default.aspx
      • 1276 Проектирование страницы содержимого Inventory.aspx
      • 1279 Проектирование страницы содержимого BuildCar.aspx
    • 1282 Роль элементов управления проверкой достоверности
      • 1283 Класс RequiredFieldValidator
      • 1284 Класс RegularExpressionValidator
      • 1284 Класс RangeValidator
      • 1284 Класс CompareValidator
      • 1285 Создание итоговой панели проверки достоверности
      • 1286 Определение групп проверки достоверности
    • 1288 Работа с темами
      • 1289 Файлы *.skin
      • 1291 Применение тем ко всему сайту
      • 1291 Применение тем на уровне страницы
      • 1291 Свойство SkinID
      • 1292 Программное назначение тем
    • 1293 Резюме
  • 1294 Глава 34. Управление состоянием в ASP.NET
    • 1294 Проблема поддержки состояния
    • 1296 Приемы управления состоянием ASP.NET
    • 1296 Роль состояния представления ASP.NET
      • 1297 Демонстрация работы с состоянием представления
      • 1299 Добавление специальных данных в состояние представления
    • 1299 Роль файла Global.asax
      • 1301 Глобальный обработчик исключений «последнего шанса»
      • 1302 Базовый класс HttpApplication
    • 1303 Различие между свойствами Application и Session
      • 1303 Поддержка данных состояния уровня приложения
      • 1305 Модификация данных приложения
      • 1306 Обработка останова веб-приложения
    • 1307 Работа с кэшем приложения
      • 1307 Работа с кэшированием данных
      • 1309 Модификация файла *.aspx
    • 1311 Поддержка данных сеанса
      • 1314 Дополнительные члены HttpSessionState
    • 1315 Cookie-наборы
      • 1315 Создание cookie-наборов
      • 1316 Чтение входящих cookie-данных
    • 1317 Роль элемента <sessionState>
      • 1317 Хранение данных сеанса на сервере состояния сеансов ASP.NET
      • 1318 Хранение информации о сеансах в выделенной базе данных
    • 1319 Интерфейс ASP.NET Profile API
      • 1319 База данных ASPNETDB.mdf
      • 1320 Определение пользовательского профиля в Web.config
      • 1322 Программный доступ к данным профиля
      • 1323 Группирование данных профиля и сохранение специальных объектов
    • 1325 Резюме
  • 1327 Часть VIII. Приложения
  • 1328 Приложение А. Программирование с помощью Windows Forms
  • 1369 Приложение Б. Независимая от платформы разработка .NET-приложений с помощью Mono
  • 1386 Предметный указатель

Инструкция как скачать книгу Эндрю Троелсен: Язык программирования C# 2010 и платформа .NET 4 в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Язык программирования C# 2010 и платформа .NET 4
Рейтинг книги:
1 голос
1562

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: