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

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

Совершите увлекательное путешествие по вселенной .NET!

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

Признанный эксперт мирового уровня, обучающий .NET с самой первой версии, поможет вам обрести глубокое понимание ключевых аспектов языка программирования C#, а также новых функциональных возможностей платформы, которые появились в версии .NET 4.5.

В этой книге рассматриваются следующие темы:

  • Объектно-ориентированное программирование на языке C#
  • Отношения между делегатами, событиями и лямбда-выражениями
  • Программирование с использованием набора технологий LINQ
  • Многопоточное, параллельное и асинхронное программирование
  • Взаимодействие с унаследованным кодом с помощью Dynamic Language Runtime
  • Работа с реляционными базами данных через ADO.NET
  • Создание распределенных систем с применением WCF
  • Моделирование бизнес-процессов с использованием WF
  • Построение пользовательских интерфейсов для настольных и веб-приложений с помощью WPF и ASP.NET

Кем бы вы ни были — опытным программистом, впервые переходящим на .NET, или разработчиком приложений для предшествующих версий .NET — эта книга предоставит исчерпывающие основы технологии .NET и послужит полным справочником, которым вы будете пользоваться в повседневной работе. Исходные коды всех примеров, рассмотренных в книге, можно загрузить с веб-сайта издательства по адресу: www.williamspublishing.com.

Основная миссия книги заключается в том, чтобы служить исчерпывающим руководством по языку программирования C# и ключевым аспектам платформы .NET (сборкам, удаленному взаимодействию, Windows Forms, Web Forms, ADO.NET, веб-службам XML и т.д.). Книга изобилует многочисленными примерами реального кода и позволяет почти сразу применять полученные знания для создания высококачественного программного обеспечения для .NET.

Эта книга предназначена для опытных разработчиков программного обеспечения, заинтересованных в освоении новых средств .NET Framework 4.5 и языка C#. Она будет служить настольным справочником как для тех, кто впервые переходит на платформу .NET, так и для тех, кто ранее писал приложения для предшествующих версий .NET.

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

ISBN 978-5-8459-1814-7

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

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

  • 32 Об авторе
  • 32 О техническом редакторе
  • 32 Благодарности
  • 33 Введение
    • 33 Автор и читатели — одна команда
    • 34 Краткий обзор книги
      • 34 Часть I. Введение в C# и платформу .NET
      • 34 Часть II. Основы программирования на C#
      • 35 Часть III. Объектно-ориентированное программирование на C#
      • 36 Часть IV. Дополнительные конструкции программирования на C#
      • 37 Часть V. Программирование с использованием сборок .NET
      • 38 Часть VI. Введение в библиотеки базовых классов .NET
      • 40 Часть VII. Windows Presentation Foundation
      • 41 Часть VIII. ASP.NET Web Forms
      • 41 Загружаемые приложения
    • 42 Исходный код примеров
    • 42 От издательства
  • 43 Часть I. Введение в C# и платформу .NET
  • 44 Глава 1. Философия .NET
    • 44 Начальное знакомство с платформой .NET
      • 45 Некоторые основные преимущества платформы .NET
    • 46 Введение в строительные блоки платформы .NET (CLR, CTS и CLS)
      • 46 Роль библиотек базовых классов
      • 47 Что привносит язык C#
      • 49 Сравнение управляемого и неуправляемого кода
    • 49 Другие языки программирования, ориентированные на .NET
      • 50 Жизнь в многоязычном окружении
    • 51 Обзор сборок .NET
      • 52 Роль языка CIL
      • 55 Роль метаданных типов .NET
      • 56 Роль манифеста сборки
    • 56 Понятие общей системы типов (CTS)
      • 57 Типы классов CTS
      • 57 Типы интерфейсов CTS
      • 58 Типы структур CTS
      • 58 Типы перечислений CTS
      • 59 Типы делегатов CTS
      • 59 Члены типов CTS
      • 59 Встроенные типы данных CTS
    • 60 Понятие общеязыковой спецификации (CLS)
      • 62 Обеспечение совместимости с CLS
    • 62 Понятие общеязыковой исполняющей среды (CLR)
    • 64 Различия между сборками, пространствами имен и типами
      • 67 Роль корневого пространства имен Microsoft
      • 67 Доступ к пространству имен программным образом
      • 68 Ссылка на внешние сборки
    • 69 Исследование сборки с помощью утилиты ildasm.exe
      • 70 Просмотр CIL-кода
      • 70 Просмотр метаданных типов
      • 71 Просмотр метаданных сборки (манифеста)
    • 71 Независимая от платформы природа .NET
    • 73 Несколько слов по поводу приложений Windows 8
      • 74 Построение приложений в стиле Metro
      • 75 Роль .NET в среде Windows 8
    • 77 Резюме
  • 78 Глава 2. Создание приложений на языке C#
    • 78 Роль .NET Framework 4.5 SDK
      • 79 Окно командной строки разработчика
    • 79 Построение приложений C# с использованием csc.exe
      • 80 Указание целевых входных и выходных параметров
      • 82 Ссылка на внешние сборки
      • 83 Ссылка на несколько внешних сборок
      • 83 Компиляция нескольких файлов исходного кода
      • 84 Работа с ответными файлами в C#
    • 85 Построение приложений .NET с использованием Notepad++
    • 86 Построение приложений .NET с помощью SharpDevelop
      • 87 Создание простого тестового проекта
    • 89 Построение приложений .NET с помощью Visual C# Express
      • 89 Некоторые уникальные возможности Visual C# Express
    • 89 Построение приложений .NET с помощью Visual Studio
      • 90 Некоторые уникальные возможности Visual Studio
      • 91 Выбор целевой версии .NET Framework в диалоговом окне New Project
      • 91 Использование утилиты Solution Explorer
      • 93 Утилита Class View
      • 93 Утилита Object Browser
      • 94 Встроенная поддержка рефакторинга кода
      • 96 Фрагменты кода и технология Surround With
      • 98 Утилита Class Designer
      • 100 Интегрированная система документации .NET Framework 4.5 SDK
    • 102 Резюме
  • 103 Часть II. Основы программирования на C#
  • 104 Глава 3. Главные конструкции программирования на C#: часть I
    • 104 Структура простой программы C#
      • 106 Вариации метода Main()
      • 107 Указание кода ошибки приложения
      • 108 Обработка аргументов командной строки
      • 109 Указание аргументов командной строки в Visual Studio
    • 110 Интересное отступление от темы: некоторые дополнительные члены класса System.Environment
    • 111 Класс System.Console
      • 112 Базовый ввод-вывод с помощью класса Console
      • 113 Форматирование консольного вывода
      • 114 Форматирование числовых данных
      • 115 Форматирование числовых данных в приложениях, отличных от консольных
    • 115 Системные типы данных и соответствующие ключевые слова C#
      • 117 Объявление и инициализация переменных
      • 118 Внутренние типы данных и операция new
      • 119 Иерархия классов для типов данных
      • 120 Члены числовых типов данных
      • 121 Члены System.Boolean
      • 121 Члены System.Char
      • 121 Синтаксический разбор значений из строковых данных
      • 122 Типы System.DateTime и System.TimeSpan
      • 122 Сборка System.Numerics.dll
    • 124 Работа со строковыми данными
      • 125 Базовые манипуляции строками
      • 125 Конкатенация строк
      • 126 Управляющие последовательности
      • 127 Определение дословных строк
      • 127 Строки и равенство
      • 128 Строки являются неизменяемыми
      • 129 Тип System.Text.StringBuilder
    • 130 Сужающие и расширяющие преобразования типов данных
      • 133 Ключевое слово checked
      • 134 Настройка проверки переполнения на уровне всего проекта
      • 135 Ключевое слово unchecked
    • 136 Понятие неявно типизированных локальных переменных
      • 137 Ограничения неявно типизированных переменных
      • 138 Неявно типизированные данные являются строго типизированными
      • 138 Польза от неявно типизированных локальных переменных
    • 139 Итерационные конструкции С#
      • 140 Цикл for
      • 140 Цикл foreach
      • 141 Циклы while и do/while
    • 142 Конструкции принятия решений и операции равенства/сравнения
      • 142 Оператор if/else
      • 142 Операции равенства и сравнения
      • 143 Условные операции
      • 143 Оператор switch
    • 145 Резюме
  • 146 Глава 4. Главные конструкции программирования на C#: часть II
    • 146 Методы и модификаторы параметров
      • 147 Стандартное поведение передачи параметров по значению
      • 148 Модификатор out
      • 149 Модификатор ref
      • 150 Модификатор params
      • 151 Определение необязательных параметров
      • 152 Вызов методов с использованием именованных параметров
      • 154 Понятие перегрузки методов
    • 156 Массивы в C#
      • 157 Синтаксис инициализации массивов C#
      • 158 Неявно типизированные локальные массивы
      • 158 Определение массива объектов
      • 159 Работа с многомерными массивами
      • 160 Использование массивов в качестве аргументов и возвращаемых значений
      • 161 Базовый класс System.Array
    • 162 Тип enum
      • 163 Управление хранилищем, лежащим в основе перечисления
      • 164 Объявление переменных типа перечисления
      • 165 Тип System.Enum
      • 166 Динамическое извлечение пар «имя/значение» перечисления
    • 168 Типы структур
      • 169 Создание переменных типа структур
    • 170 Типы значений и ссылочные типы
      • 171 Типы значений, ссылочные типы и операция присваивания
      • 173 Типы значений, содержащие ссылочные типы
      • 174 Передача ссылочных типов по значению
      • 175 Передача ссылочных типов по ссылке
      • 176 Заключительные детали относительно типов значений и ссылочных типов
    • 177 Понятие типов, допускающих null, в C#
      • 178 Работа с типами, допускающими null
      • 179 Операция ??
    • 180 Резюме
  • 181 Часть III. Объектно-ориентированное программирование на C#
  • 182 Глава 5. Инкапсуляция
    • 182 Знакомство с типом класса C#
      • 184 Размещение объектов с помощью ключевого слова new
    • 185 Понятие конструкторов
      • 185 Роль стандартного конструктора
      • 186 Определение специальных конструкторов
      • 187 Еще раз о стандартном конструкторе
    • 188 Роль ключевого слова this
      • 189 Построение цепочки вызовов конструкторов с использованием this
      • 192 Обзор потока конструктора
      • 193 Еще раз о необязательных аргументах
    • 194 Понятие ключевого слова static
      • 195 Определение статических полей данных
      • 197 Определение статических методов
      • 198 Определение статических конструкторов
      • 200 Определение статических классов
    • 201 Основные принципы объектно-ориентированного программирования
      • 201 Роль инкапсуляции
      • 202 Роль наследования
      • 203 Роль полиморфизма
    • 204 Модификаторы доступа C#
      • 205 Стандартные модификаторы доступа
      • 206 Модификаторы доступа и вложенные типы
    • 206 Первый принцип: службы инкапсуляции C#
      • 207 Инкапсуляция с использованием традиционных методов доступа и изменения
      • 209 Инкапсуляция с использованием свойств .NET
      • 212 Использование свойств внутри определения класса
      • 213 Свойства, доступные только для чтения и только для записи
      • 214 Еще раз о ключевом слове static: определение статических свойств
    • 215 Понятие автоматических свойств
      • 216 Взаимодействие с автоматическими свойствами
      • 217 Замечания относительно автоматических свойств и стандартных значений
    • 218 Понятие синтаксиса инициализации объектов
      • 220 Вызов специальных конструкторов с помощью синтаксиса инициализации
      • 221 Инициализация вложенных типов
    • 222 Работа с данными константных полей
      • 223 Понятие полей, допускающих только чтение
      • 224 Статические поля, допускающие только чтение
    • 224 Понятие частичных типов
    • 226 Резюме
  • 227 Глава 6. Понятие наследования и полиморфизма
    • 227 Базовый механизм наследования
      • 228 Указание родительского класса для существующего класса
      • 230 Замечание относительно множества базовых классов
      • 230 Ключевое слово sealed
    • 231 Изменение диаграмм классов Visual Studio
    • 233 Второй принцип ООП: подробности о наследовании
      • 234 Управление созданием базового класса с помощью ключевого слова base
      • 236 Хранение секретов семейства: ключевое слово protected
      • 237 Добавление запечатанного класса
    • 237 Реализация модели включения/делегации
      • 239 Определения вложенных типов
    • 240 Третий принцип ООП: поддержка полиморфизма в C#
      • 241 Ключевые слова virtual и override
      • 243 Переопределение виртуальных членов в IDE-среде Visual Studio
      • 244 Запечатывание виртуальных членов
      • 244 Абстрактные классы
      • 246 Понятие полиморфного интерфейса
      • 249 Сокрытие членов
    • 251 Правила приведения к базовому и производному классу
      • 252 Ключевое слово as
      • 253 Ключевое слово is
    • 253 Главный родительский класс System.Object
      • 256 Переопределение System.Object.ToString()
      • 257 Переопределение System.Object.Equals()
      • 258 Переопределение System.Object.GetHashCode()
      • 259 Тестирование модифицированного класса Person
      • 260 Статические члены System.Object
    • 260 Резюме
  • 261 Глава 7. Структурированная обработка исключений
    • 261 Ода ошибкам и исключениям
    • 262 Роль обработки исключений .NET
      • 263 Строительные блоки обработки исключений в .NET
      • 264 Базовый класс System.Exception
    • 265 Простейший пример
      • 267 Генерация общего исключения
      • 268 Перехват исключений
    • 269 Конфигурирование состояния исключения
      • 269 Свойство TargetSite
      • 270 Свойство StackTrace
      • 271 Свойство HelpLink
      • 271 Свойство Data
    • 273 Исключения уровня системы (System.SystemException)
    • 274 Исключения уровня приложения (System.ApplicationException)
      • 274 Построение специальных исключений, способ первый
      • 276 Построение специальных исключений, способ второй
      • 277 Построение специальных исключений, способ третий
    • 278 Обработка нескольких исключений
      • 280 Общие операторы catch
      • 281 Повторная генерация исключений
      • 282 Внутренние исключения
    • 283 Блок finally
    • 283 Какие исключения могут генерировать методы?
    • 284 Результат наличия необработанных исключений
    • 285 Отладка необработанных исключений с использованием Visual Studio
    • 285 Резюме
  • 287 Глава 8. Работа с интерфейсами
    • 287 Понятие интерфейсных типов
      • 288 Сравнение интерфейсных типов и абстрактных базовых классов
    • 290 Определение специальных интерфейсов
    • 292 Реализация интерфейса
    • 294 Вызов членов интерфейса на уровне объектов
      • 295 Получение ссылок на интерфейсы: ключевое слово as
      • 295 Получение ссылок на интерфейсы: ключевое слово is
    • 296 Использование интерфейсов в качестве параметров
    • 298 Использование интерфейсов в качестве возвращаемых значений
    • 298 Массивы интерфейсных типов
    • 299 Реализация интерфейсов с использованием Visual Studio
    • 301 Явная реализация интерфейсов
    • 303 Проектирование иерархий интерфейсов
      • 304 Множественное наследование посредством интерфейсных типов
    • 306 Интерфейсы IEnumerable и IEnumerator
      • 308 Построение методов итератора с применением ключевого слова yield
      • 310 Построение именованного итератора
    • 311 Интерфейс ICloneable
      • 313 Более сложный пример клонирования
    • 315 Интерфейс IComparable
      • 318 Указание нескольких порядков сортировки посредством IComparer
      • 319 Специальные свойства и специальные типы сортировки
    • 320 Резюме
  • 321 Часть IV. Дополнительные конструкции программирования на C#
  • 322 Глава 9. Коллекции и обобщения
    • 322 Побудительные причины создания классов коллекций
      • 324 Пространство имен System.Collections
      • 326 Обзор пространства имен System.Collections.Specialized
    • 327 Проблемы, связанные с необобщенными коллекциями
      • 327 Проблема производительности
      • 330 Проблемы с безопасностью типов
      • 333 Первый взгляд на обобщенные коллекции
    • 334 Роль параметров обобщенных типов
      • 335 Указание параметров типа для обобщенных классов и структур
      • 336 Указание параметров типа для обобщенных членов
      • 336 Указание параметров типов для обобщенных интерфейсов
    • 338 Пространство имен System.Collections.Generic
      • 339 Синтаксис инициализации коллекций
      • 340 Работа с классом List<T>
      • 342 Работа с классом Stack<T>
      • 342 Работа с классом Queue<T>
      • 344 Работа с классом SortedSet<T>
    • 345 Пространство имен System.Collections.ObjectModel
      • 345 Работа с ObservableCollection<T>
    • 347 Создание специальных обобщенных методов
      • 349 Выведение параметров типа
    • 351 Создание специальных обобщенных структур и классов
      • 352 Ключевое слово default в обобщенном коде
    • 353 Ограничение параметров типа
      • 353 Примеры использования ключевого слова where
      • 355 Недостаток ограничений операций
    • 356 Резюме
  • 357 Глава 10. Делегаты, события и лямбда-выражения
    • 357 Понятие типа делегата .NET
    • 358 Определение типа делегата в C#
    • 360 Базовые классы System.MulticastDelegate и System.Delegate
    • 362 Пример простейшего делегата
      • 363 Исследование объекта делегата
    • 364 Отправка уведомлений о состоянии объекта с использованием делегатов
      • 367 Включение группового вызова
      • 368 Удаление целей из списка вызовов делегата
    • 369 Синтаксис групповых преобразований методов
    • 370 Понятие обобщенных делегатов
      • 371 Обобщенные делегаты Action<> и Func<>
    • 373 Понятие событий C#
      • 375 Ключевое слово event
      • 376 «За кулисами» событий
      • 377 Прослушивание входящих событий
      • 378 Упрощенная регистрация событий с использованием Visual Studio
      • 379 Создание специальных аргументов событий
    • 381 Обобщенный делегат EventHandler<T>
    • 381 Понятие анонимных методов C#
      • 383 Доступ к локальным переменным
    • 384 Понятие лямбда-выражений
      • 386 Анализ лямбда-выражения
      • 387 Обработка аргументов внутри множества операторов
      • 388 Лямбда-выражения с несколькими параметрами и без параметров
      • 389 Усовершенствование примера PrimAndProperCarEvents за счет использования лямбда-выражений
    • 390 Резюме
  • 391 Глава 11. Расширенные средства языка C#
    • 391 Понятие методов-индексаторов
      • 393 Индексация данных с использованием строковых значений
      • 394 Перегрузка методов-индексаторов
      • 395 Многомерные индексаторы
      • 396 Определения индексаторов в интерфейсных типах
    • 396 Понятие перегрузки операций
      • 397 Перегрузка бинарных операций
      • 399 А как насчет операций += и -=?
      • 399 Перегрузка унарных операций
      • 400 Перегрузка операций эквивалентности
      • 401 Перегрузка операций сравнения
      • 402 Финальные соображения относительно перегрузки операций
    • 402 Понятие специальных преобразований типов
      • 402 Числовые преобразования
      • 403 Преобразования между связанными типами классов
      • 403 Создание специальных процедур преобразования
      • 406 Дополнительные явные преобразования для типа Square
      • 406 Определение процедур неявного преобразования
      • 408 Понятие расширяющих методов
      • 412 Понятие анонимных типов
      • 413 Определение анонимного типа
      • 417 Анонимные типы, содержащие другие анонимные типы
    • 417 Работа с типами указателей
      • 419 Ключевое слово unsafe
      • 421 Работа с операциями * и &
      • 421 Небезопасная (и безопасная) функция обмена
      • 422 Доступ к полям через указатели (операция ->)
      • 423 Ключевое слово stackalloc
      • 423 Закрепление типа с помощью ключевого слова fixed
      • 424 Ключевое слово sizeof
    • 425 Резюме
  • 426 Глава 12. LINQ to Objects
    • 426 Программные конструкции, специфичные для LINQ
      • 427 Неявная типизация локальных переменных
      • 427 Синтаксис инициализации объектов и коллекций
      • 428 Лямбда-выражения
      • 429 Расширяющие методы
      • 429 Анонимные типы
    • 430 Роль LINQ
      • 431 Выражения LINQ строго типизированы
      • 431 Основные сборки LINQ
    • 432 Применение запросов LINQ к элементарным массивам
      • 433 Решение без использования LINQ
      • 434 Рефлексия результирующего набора LINQ
      • 435 LINQ и неявно типизированные локальные переменные
      • 436 LINQ и расширяющие методы
      • 437 Роль отложенного выполнения
      • 437 Роль немедленного выполнения
    • 438 Возврат результата запроса LINQ
      • 440 Возврат результатов LINQ через немедленное выполнение
    • 440 Применение запросов LINQ к объектам коллекций
      • 441 Доступ к содержащимся в контейнере подобъектам
      • 442 Применение запросов LINQ к необобщенным коллекциям
      • 442 Фильтрация данных с использованием OfType<T>()
    • 443 Исследование операций запросов LINQ
      • 444 Базовый синтаксис выборки
      • 445 Получение подмножества данных
      • 446 Проецирование новых типов данных
      • 447 Получение счетчиков посредством Enumerable
      • 447 Обращение результирующих наборов
      • 447 Выражения сортировки
      • 448 LINQ как лучшее средство построения диаграмм
      • 449 Исключение дубликатов
      • 449 Агрегатные операции LINQ
    • 450 Внутреннее представление операторов запросов LINQ
      • 451 Построение выражений запросов с использованием операций запросов
      • 451 Построение выражений запросов с использованием типа Enumerable и лямбда-выражений
      • 453 Построение выражений запросов с использованием типа Enumerable и анонимных методов
      • 453 Построение выражений запросов с использованием типа Enumerable и низкоуровневых делегатов
    • 454 Резюме
  • 455 Глава 13. Время жизни объектов
    • 455 Классы, объекты и ссылки
    • 456 Базовые сведения о времени жизни объектов
      • 457 Код CIL для ключевого слова new
      • 458 Установка объектных ссылок в null
    • 459 Роль корневых элементов приложения
    • 461 Понятие поколений объектов
    • 462 Параллельная сборка мусора в .NET 1.0 — .NET 3.5
      • 462 Фоновая сборка мусора в .NET 4.0 и последующих версиях
    • 463 Тип System.GC
      • 464 Принудительный запуск сборщика мусора
    • 466 Построение финализируемых объектов
      • 467 Переопределение System.Object.Finalize()
      • 469 Описание процесса финализации
    • 470 Создание освобождаемых объектов
      • 472 Повторное использование ключевого слова using в C#
    • 473 Создание финализируемых и освобождаемых типов
      • 474 Формализованный шаблон освобождения
    • 476 Ленивое создание объектов
      • 479 Настройка процесса создания данных Lazy<>
    • 480 Резюме
  • 481 Часть V. Программирование с использованием сборок .NET
  • 482 Глава 14. Построение и конфигурирование библиотек классов
    • 482 Определение специальных пространств имен
      • 484 Устранение конфликтов между именами посредством полностью заданных имен
      • 485 Устранение конфликтов между именами посредством псевдонимов
      • 487 Создание вложенных пространств имен
      • 488 Стандартное пространство имен Visual Studio
    • 488 Роль сборок .NET
      • 489 Сборки увеличивают возможности для повторного использования кода
      • 489 Сборки определяют границы типов
      • 489 Сборки являются единицами, поддерживающими версии
      • 490 Сборки являются самоописательными
      • 490 Сборки являются конфигурируемыми
    • 490 Формат сборки .NET
      • 490 Заголовок файла Windows
      • 492 Заголовок файла CLR
      • 493 CIL-код, метаданные типов и манифест сборки
      • 494 Необязательные ресурсы сборки
    • 494 Построение и использование специальной библиотеки классов
      • 497 Исследование манифеста
      • 499 Исследование CIL-кода
      • 500 Исследование метаданных типов
      • 500 Построение клиентского приложения на C#
      • 502 Построение клиентского приложения на Visual Basic
      • 503 Межъязыковое наследование в действии
    • 504 Понятие закрытых сборок
      • 504 Идентичность закрытой сборки
      • 504 Понятие процесса зондирования
      • 505 Конфигурирование закрытых сборок
      • 507 Роль файла App.Config
    • 508 Понятие разделяемых сборок
      • 509 Глобальный кеш сборок
      • 510 Понятие строгих имен
      • 511 Генерация строгих имен в командной строке
      • 513 Генерация строгих имен в Visual Studio
      • 514 Установка строго именованных сборок в GAC
    • 515 Использование разделяемой сборки
      • 517 Исследование манифеста SharedCarLibClient
    • 517 Конфигурирование разделяемых сборок
      • 518 Фиксация текущей версии разделяемой сборки
      • 518 Построение разделяемой сборки версии 2.0.0.0
      • 520 Динамическое перенаправление на специфичные версии разделяемой сборки
    • 522 Понятие сборок политик издателя
      • 523 Отключение политики издателя
    • 523 Элемент <codeBase>
    • 525 Пространство имен System.Configuration
    • 526 Документация по схеме конфигурационного файла
    • 526 Резюме
  • 528 Глава 15. Рефлексия типов, позднее связывание и программирование с использованием атрибутов
    • 528 Потребность в метаданных типов
      • 529 Просмотр (частичных) метаданных для перечисления EngineState
      • 530 Просмотр (частичных) метаданных для типа Car
      • 531 Исследование блока TypeRef
      • 532 Документирование определяемой сборки
      • 532 Документирование ссылаемых сборок
      • 532 Документирование строковых литералов
    • 533 Понятие рефлексии
      • 534 Класс System.Type
      • 534 Получение информации о типе с помощью System.Object.GetType()
      • 535 Получение информации о типе с помощью typeof()
      • 535 Получение информации о типе с помощью System.Type.GetType()
    • 536 Построение специального средства для просмотра метаданных
      • 536 Рефлексия методов
      • 537 Рефлексия полей и свойств
      • 537 Рефлексия реализованных интерфейсов
      • 538 Отображение различных дополнительных деталей
      • 538 Реализация метода Main()
      • 540 Рефлексия обобщенных типов
      • 540 Рефлексия параметров и возвращаемых значений методов
    • 541 Динамически загружаемые сборки
    • 543 Рефлексия разделяемых сборок
    • 545 Позднее связывание
      • 546 Класс System.Activator
      • 547 Вызов методов без параметров
      • 548 Вызов методов с параметрами
    • 549 Роль атрибутов .NET
      • 550 Потребители атрибутов
      • 550 Применение атрибутов в C#
      • 551 Сокращенная нотация атрибутов C#
      • 552 Указание параметров конструктора для атрибутов
      • 552 Атрибут [Obsolete] в действии
    • 553 Построение специальных атрибутов
      • 553 Применение специальных атрибутов
      • 554 Синтаксис именованных свойств
      • 554 Ограничение использования атрибутов
    • 555 Атрибуты уровня сборки
      • 556 Файл AssemblyInfo.cs, генерируемый Visual Studio
    • 557 Рефлексия атрибутов с использованием раннего связывания
    • 558 Рефлексия атрибутов с использованием позднего связывания
    • 559 Возможное применение на практике рефлексии, позднего связывания и специальных атрибутов
    • 560 Построение расширяемого приложения
      • 561 Построение сборки CommonSnappableTypes.dll
      • 561 Построение оснастки на C#
      • 562 Построение оснастки на Visual Basic
      • 563 Построение расширяемого приложения Windows Forms
    • 566 Резюме
  • 567 Глава 16. Динамические типы и среда DLR
    • 567 Роль ключевого слова dynamic языка C#
      • 569 Вызов членов на динамически объявленных данных
      • 570 Роль сборки Microsoft.CSharp.dll
      • 571 Область применения ключевого слова dynamic
      • 572 Ограничения ключевого слова dynamic
      • 572 Практическое применение ключевого слова dynamic
      • 573 Роль исполняющей среды динамического языка (DLR)
      • 574 Роль деревьев выражений
      • 574 Роль пространства имен System.Dynamic
      • 575 Динамический поиск в деревьях выражений во время выполнения
    • 575 Упрощение вызовов с поздним связыванием посредством динамических типов
      • 576 Использование ключевого слова dynamic для передачи аргументов
      • 578 Упрощение взаимодействия с COM посредством динамических данных
      • 579 Роль основных сборок взаимодействия
      • 580 Встраивание метаданных взаимодействия
      • 581 Общие сложности взаимодействия с COM
    • 582 Взаимодействие с COM с использованием динамических данных C#
      • 585 Взаимодействие с COM без использования динамических данных C#
    • 586 Резюме
  • 588 Глава 17. Процессы, домены приложений и объектные контексты
    • 588 Роль процесса Windows
      • 589 Роль потоков
    • 591 Взаимодействие с процессами на платформе .NET
      • 593 Перечисление выполняющихся процессов
      • 594 Исследование конкретного процесса
      • 594 Исследование набора потоков процесса
      • 596 Исследование набора модулей процесса
      • 597 Запуск и останов процессов программным образом
      • 598 Управление запуском процесса с использованием класса ProcessStartInfo
    • 599 Домены приложений .NET
      • 600 Класс System.AppDomain
    • 601 Взаимодействие со стандартным доменом приложения
      • 602 Перечисление загруженных сборок
      • 604 Получение уведомлений о загрузке сборок
    • 604 Создание новых доменов приложений
      • 606 Загрузка сборок в специальные домены приложений
      • 607 Выгрузка доменов приложений программным образом
    • 608 Контекстные границы объектов
      • 609 Контекстно-свободные и контекстно-связанные типы
      • 609 Определение контекстно-связанного объекта
      • 609 Исследование контекста объекта
    • 611 Итоговые сведения о процессах, доменах приложений и контекстах
    • 611 Резюме
  • 612 Глава 18. Язык CIL и роль динамических сборок
    • 612 Причины для изучения грамматики языка CIL
    • 613 Директивы, атрибуты и коды операций CIL
      • 614 Роль директив CIL
      • 614 Роль атрибутов CIL
      • 614 Роль кодов операций CIL
      • 615 Разница между кодами операций и их мнемоническими эквивалентами в CIL
    • 615 Основанная на стеке природа CIL
    • 617 Возвратное проектирование
      • 620 Роль меток в коде CIL
      • 620 Взаимодействие с CIL: модификация файла *.il
      • 622 Компиляция CIL-кода с помощью ilasm.exe
      • 623 Роль инструмента peverify.exe
    • 623 Директивы и атрибуты CIL
      • 623 Указание ссылок на внешние сборки в CIL
      • 624 Определение текущей сборки в CIL
      • 624 Определение пространств имен в CIL
      • 625 Определение типов классов в CIL
      • 626 Определение и реализация интерфейсов в CIL
      • 627 Определение структур в CIL
      • 627 Определение перечислений в CIL
      • 627 Определение обобщений в CIL
      • 628 Компиляция файла CILTypes.il
    • 629 Соответствия между базовыми классами .NET, C# и CIL
    • 629 Определение членов типов в CIL
      • 630 Определение полей данных в CIL
      • 630 Определение конструкторов типа в CIL
      • 631 Определение свойств в CIL
      • 631 Определение параметров членов
    • 632 Исследование кодов операций CIL
      • 634 Директива .maxstack
      • 634 Объявление локальных переменных в CIL
      • 635 Отображение параметров на локальные переменные в CIL
      • 636 Скрытая ссылка this
      • 636 Представление итерационных конструкций в CIL
    • 637 Создание сборки .NET на CIL
      • 637 Построение сборки CILCars.dll
      • 639 Построение сборки CILCarClient.exe
    • 641 Динамические сборки
      • 642 Исследование пространства имен System.Reflection.Emit
      • 643 Роль типа System.Reflection.Emit.ILGenerator
      • 644 Выдача динамической сборки
      • 645 Выдача сборки и набора модулей
      • 646 Роль типа ModuleBuilder
      • 647 Выдача типа HelloClass и строковой переменной-члена
      • 648 Выдача конструкторов
      • 649 Выдача метода SayHello()
      • 649 Использование динамически сгенерированной сборки
    • 650 Резюме
  • 651 Часть VI. Введение в библиотеки базовых классов .NET
  • 652 Глава 19. Многопоточное, параллельное и асинхронное программирование
    • 653 Отношения между процессом, доменом приложения, контекстом и потоком
      • 654 Проблема параллелизма
      • 654 Роль синхронизации потоков
    • 655 Краткий обзор делегатов .NET
    • 656 Асинхронная природа делегатов
      • 657 Методы BeginInvoke() и EndInvoke()
      • 657 Интерфейс System.IAsyncResult
    • 658 Асинхронный вызов метода
      • 658 Синхронизация вызывающего потока
      • 660 Роль делегата AsyncCallback
      • 662 Роль класса AsyncResult
      • 663 Передача и получение специальных данных состояния
    • 664 Пространство имен System.Threading
    • 664 Класс System.Threading.Thread
      • 666 Получение статистики о текущем потоке выполнения
      • 666 Свойство Name
      • 667 Свойство Priority
    • 668 Ручное создание вторичных потоков
      • 668 Работа с делегатом ThreadStart
      • 670 Работа с делегатом ParametrizedThreadStart
      • 671 Класс AutoResetEvent
      • 672 Потоки переднего плана и фоновые потоки
    • 673 Проблемы параллелизма
      • 675 Синхронизация с использованием ключевого слова lock языка C#
      • 677 Синхронизация с использованием типа System.Threading.Monitor
      • 678 Синхронизация с использованием типа System.Threading.Interlocked
      • 679 Синхронизация с использованием атрибута [Synchronization]
    • 680 Программирование с использованием обратных вызовов Timer
    • 681 Пул потоков CLR
    • 683 Параллельное программирование с использованием TPL
      • 683 Пространство имен System.Threading.Tasks
      • 683 Роль класса Parallel
      • 684 Обеспечение параллелизма данных с помощью класса Parallel
      • 686 Доступ к элементам пользовательского интерфейса во вторичных потоках
      • 688 Класс Task
      • 688 Обработка запроса на отмену
      • 689 Обеспечение параллелизма задач с помощью класса Parallel
    • 692 Запросы Parallel LINQ (PLINQ)
      • 693 Выполнение запроса PLINQ
      • 694 Отмена запроса PLINQ
    • 695 Асинхронные вызовы в версии .NET 4.5
      • 695 Знакомство с ключевыми словами async и await языка C#
      • 697 Соглашения об именовании асинхронных методов
      • 698 Асинхронные методы, возвращающие void
      • 699 Асинхронные методы с множеством контекстов await
      • 699 Модернизация примера AddWithThreads с использованием asycn/await
    • 701 Резюме
  • 702 Глава 20. Файловый ввод-вывод и сериализация объектов
    • 702 Исследование пространства имен System.IO
    • 703 Классы Directory (DirectoryInfo) и File (FileInfo)
      • 704 Абстрактный базовый класс FileSystemInfo
    • 705 Работа с типом DirectoryInfo
      • 706 Перечисление файлов с помощью типа DirectoryInfo
      • 707 Создание подкаталогов с помощью типа DirectoryInfo
    • 708 Работа с типом Directory
    • 709 Работа с типом DriveInfo
    • 710 Работа с классом FileInfo
      • 711 Метод FileInfo.Create()
      • 711 Метод FileInfo.Open()
      • 712 Методы FileOpen.OpenRead() и FileInfo.OpenWrite()
      • 713 Метод FileInfo.OpenText()
      • 713 Методы FileInfo.CreateText() и FileInfo.AppendText()
    • 714 Работа с типом File
      • 714 Дополнительные члены File
    • 715 Абстрактный класс Stream
      • 716 Работа с классом FileStream
    • 717 Работа с классами StreamWriter и StreamReader
      • 718 Запись в текстовый файл
      • 719 Чтение из текстового файла
      • 720 Прямое создание экземпляров классов StreamWriter/StreamReader
    • 721 Работа с классами StringWriter и StringReader
    • 722 Работа с классами BinaryWriter и BinaryReader
    • 723 Программное отслеживание файлов
    • 725 Понятие сериализации объектов
      • 727 Роль графов объектов
    • 728 Конфигурирование объектов для сериализации
      • 728 Определение сериализируемых типов
      • 729 Открытые поля, закрытые поля и открытые свойства
    • 730 Выбор форматера сериализации
      • 730 Интерфейсы IFormatter и IRemotingFormatter
      • 731 Точность типов среди форматеров
    • 732 Сериализация объектов с использованием BinaryFormatter
      • 733 Десериализация объектов с использованием BinaryFormatter
    • 734 Сериализация объектов с использованием SoapFormatter
    • 735 Сериализация объектов с использованием XmlSerializer
      • 736 Управление генерацией данных XML
    • 737 Сериализация коллекций объектов
    • 739 Настройка процессов сериализации SOAP и двоичной сериализации
      • 739 Углубленный взгляд на сериализацию объектов
      • 740 Настройка сериализации с использованием ISerializable
      • 743 Настройка сериализации с использованием атрибутов
    • 744 Резюме
  • 745 Глава 21. ADO.NET, часть I: подключенный уровень
    • 745 Высокоуровневое определение ADO.NET
      • 746 Три грани ADO.NET
    • 747 Поставщики данных ADO.NET
      • 749 Поставщики данных ADO.NET от Microsoft
      • 750 О сборке System.Data.OracleClient.dll
      • 750 Получение сторонних поставщиков данных ADO.NET
    • 750 Дополнительные пространства имен ADO.NET
    • 751 Типы из пространства имен System.Data
      • 752 Роль интерфейса IDbConnection
      • 752 Роль интерфейса IDbTransaction
      • 753 Роль интерфейса IDbCommand
      • 753 Роль интерфейсов IDbDataParameter и IDataParameter
      • 754 Роль интерфейсов IDbDataAdapter и IDataAdapter
      • 754 Роль интерфейсов IDataReader и IDataRecord
    • 755 Абстрагирование поставщиков данных с помощью интерфейсов
      • 757 Повышение гибкости с помощью конфигурационных файлов приложения
    • 758 Создание базы данных AutoLot
      • 758 Создание таблицы Inventory
      • 760 Занесение тестовых записей в таблицу Inventory
      • 761 Создание хранимой процедуры GetPetName()
      • 761 Создание таблиц Customers и Orders
      • 763 Визуальное создание отношений между таблицами
    • 764 Модель фабрик поставщиков данных ADO.NET
      • 765 Полный пример фабрики поставщиков данных
      • 767 Потенциальный недостаток модели фабрик поставщиков данных
      • 768 Элемент <connectionStrings>
    • 769 Понятие подключенного уровня ADO.NET
      • 770 Работа с объектами подключения
      • 772 Работа с объектами ConnectionStringBuilder
      • 773 Работа с объектами команд
    • 774 Работа с объектами чтения данных
      • 776 Получение нескольких результирующих наборов с использованием объекта чтения данных
    • 776 Создание многократно используемой библиотеки доступа к данным
      • 778 Добавление логики подключения
      • 778 Добавление логики вставки
      • 779 Добавление логики удаления
      • 780 Добавление логики обновления
      • 780 Добавление логики выборки
      • 781 Работа с параметризированными объектами команд
      • 783 Выполнение хранимой процедуры
    • 785 Создание приложения с консольным пользовательским интерфейсом
      • 785 Реализация метода Main()
      • 787 Реализация метода ShowInstructions()
      • 787 Реализация метода ListInventory()
      • 788 Реализация метода DeleteCar()
      • 788 Реализация метода InsertNewCar()
      • 789 Реализация метода UpdateCarPetName()
      • 789 Реализация метода LookUpPetName()
    • 790 Понятие транзакций базы данных
      • 791 Основные члены объекта транзакции ADO.NET
      • 792 Добавление таблицы CreditRisks в базу данных AutoLot
      • 792 Добавление метода транзакции в InventoryDAL
      • 793 Тестирование транзакции базы данных
    • 794 Резюме
  • 795 Глава 22. ADO.NET, часть II: автономный уровень
    • 795 Понятие автономного уровня ADO.NET
    • 797 Роль объектов DataSet
      • 797 Основные свойства класса DataSet
      • 797 Основные методы класса DataSet
      • 798 Создание DataSet
    • 799 Работа с объектами DataColumn
      • 800 Построение объекта DataColumn
      • 801 Включение автоинкрементных полей
      • 801 Добавление объектов DataColumn в DataTable
    • 802 Работа с объектами DataRow
      • 803 Свойство RowState
      • 804 Свойство DataRowVersion
    • 805 Работа с объектами DataTable
      • 806 Вставка объектов DataTable в DataSet
      • 806 Получение данных из объекта DataSet
      • 807 Обработка данных из DataTable с использованием объектов DataTableReader
      • 808 Сериализация объектов DataTable и DataSet в формате XML
      • 810 Сериализация объектов DataTable и DataSet в двоичном формате
    • 811 Привязка объектов DataTable к графическим пользовательским интерфейсам< Windows Forms
      • 812 Заполнение DataTable из обобщенного List<T>
      • 814 Удаление строк из DataTable
      • 815 Выборка строк на основе критерия фильтрации
      • 817 Обновление строк в DataTable
      • 818 Работа с типом DataView
    • 819 Работа с адаптерами данных
      • 820 Простой пример адаптера данных
      • 821 Отображение имен из базы данных на дружественные к пользователю имена
    • 822 Добавление в AutoLotDAL.dll функциональности автономного уровня
      • 822 Определение начального класса
      • 823 Конфигурирование адаптера данных с использованием SqlCommandBuilder
      • 824 Реализация метода GetAllInventory()
      • 824 Реализация метода UpdateInventory()
      • 825 Установка номера версии
      • 825 Тестирование функциональности автономного уровня
    • 826 Объекты DataSet с несколькими таблицами и отношения между данными
      • 827 Подготовка адаптеров данных
      • 828 Построение отношений между таблицами
      • 829 Обновление таблиц базы данных
      • 829 Навигация между связанными таблицами
    • 831 Инструменты визуального конструирования баз данных Windows Forms
      • 832 Визуальное проектирование элемента управления DataGridView
      • 835 Сгенерированный файл App.config
      • 835 Исследование строго типизированного класса DataSet
      • 836 Исследование строго типизированного класса DataTable
      • 837 Исследование строго типизированного класса DataRow
      • 837 Исследование строго типизированного адаптера данных
      • 838 Завершение приложения Windows Forms
    • 839 Изоляция строго типизированного кода работы с базой данных в библиотеке классов
      • 840 Просмотр сгенерированного кода
      • 841 Выборка данных с помощью сгенерированного кода
      • 842 Вставка данных с помощью сгенерированного кода
      • 843 Удаление данных с помощью сгенерированного кода
      • 843 Вызов хранимой процедуры с помощью сгенерированного кода
    • 844 Программирование с помощью LINQ to DataSet
      • 846 Роль библиотеки расширений DataSet
      • 846 Получение объекта DataTable, совместимого с LINQ
      • 848 Роль расширяющего метода DataRowExtensions.Field<T>()
      • 848 Заполнение новых объектов DataTable из запросов LINQ
    • 849 Резюме
  • 850 Глава 23. ADO.NET, часть III: Entity Framework
    • 850 Роль Entity Framework
      • 852 Роль сущностей
      • 854 Строительные блоки Entity Framework
      • 854 Роль служб объектов
      • 855 Роль клиента сущности
      • 856 Роль файла *.edmx
      • 857 Роль классов ObjectContext и ObjectSet<T>
      • 858 Собираем все вместе
    • 859 Построение и анализ первой модели EDM
      • 859 Генерация файла *.edmx
      • 862 Изменение формы сущностных данных
      • 864 Просмотр отображений
      • 865 Просмотр сгенерированного файла *.edmx
      • 867 Просмотр сгенерированного исходного кода
      • 869 Улучшение сгенерированного исходного кода
    • 869 Программирование с использованием концептуальной модели
      • 870 Удаление записи
      • 871 Обновление записи
      • 872 Запросы с помощью LINQ to Entities
      • 873 Запросы с помощью Entity SQL
      • 874 Работа с объектом EntityDataReader
    • 875 Проект AutoLotDAL версии 4, теперь с сущностями
      • 875 Роль навигационных свойств
      • 877 Использование навигационных свойств внутри запросов LINQ to Entity
      • 878 Вызов хранимой процедуры
    • 879 Привязка данных сущностей к графическим пользовательским интерфейсам Windows Forms
      • 882 Добавление кода привязки данных
    • 882 Продолжение изучения API-интерфейсов доступа к данным в .NET
    • 883 Резюме
  • 884 Глава 24. Введение в LINQ to XML
    • 884 История о двух API-интерфейсах XML
      • 886 Интерфейс LINQ to XML как лучшая модель DOM
      • 886 Синтаксис литералов Visual Basic как наилучший интерфейс LINQ to XML
    • 887 Члены пространства имен System.Xml.Linq
      • 889 Осевые методы LINQ to XML
      • 890 Избыточность XName (и XNamespace)
    • 891 Работа с XElement и XDocument
      • 893 Генерация документов из массивов и контейнеров
      • 894 Загрузка и разбор XML-содержимого
    • 894 Манипулирование XML-документом в памяти
      • 895 Построение пользовательского интерфейса приложения LINQ to XML
      • 895 Импорт файла Inventory.xml
      • 896 Определение вспомогательного класса LINQ to XML
      • 897 Связывание пользовательского интерфейса и вспомогательного класса
    • 898 Резюме
  • 899 Глава 25. Введение в Windows Communication Foundation
    • 899 Собрание API-интерфейсов распределенных вычислений
      • 900 Роль DCOM
      • 901 Роль служб COM+/Enterprise Services
      • 902 Роль MSMQ
      • 902 Роль .NET Remoting
      • 903 Роль веб-служб XML
    • 904 Роль WCF
      • 905 Обзор функциональных возможностей WCF
      • 905 Обзор архитектуры, ориентированной на службы
      • 906 WCF: заключение
    • 907 Исследование основных сборок WCF
    • 908 Шаблоны проектов WCF в Visual Studio
      • 909 Шаблон проекта для построения веб-сайта со службами WCF
    • 909 Базовая структура приложения WCF
    • 911 Адрес, привязка и контракт в WCF
      • 911 Понятие контрактов WCF
      • 912 Понятие привязок WCF
      • 914 Понятие адресов WCF
    • 916 Построение службы WCF
      • 917 Атрибут [ServiceContract]
      • 918 Атрибут [OperationContract]
      • 918 Служебные типы как контракты операций
    • 919 Хостинг службы WCF
      • 920 Установка ABC внутри файла App.config
      • 921 Кодирование с использованием типа ServiceHost
      • 921 Указание базовых адресов
      • 922 Подробный анализ типа ServiceHost
      • 924 Подробный анализ элемента <system.serviceModel>
      • 924 Включение обмена метаданными
    • 927 Построение клиентского приложения WCF
      • 927 Генерация кода прокси с использованием svcutil.exe
      • 928 Генерация кода прокси с использованием Visual Studio
      • 930 Конфигурирование привязки на основе TCP
    • 931 Упрощение конфигурационных настроек
      • 931 Использование стандартных конечных точек
      • 932 Открытие одной службы WCF, использующей множество привязок
      • 934 Изменение параметров привязки WCF
      • 935 Использование конфигурации стандартного поведения MEX
      • 936 Обновление клиентского прокси и выбор привязки
    • 937 Использование шаблона проекта WCF Service Library
      • 938 Построение простой математической службы
      • 938 Тестирование службы WCF с помощью WcfTestClient.exe
      • 939 Изменение конфигурационных файлов с помощью SvcConfigEditor.exe
    • 940 Хостинг службы WCF внутри Windows-службы
      • 941 Указание ABC в коде
      • 943 Включение MEX
      • 943 Создание программы установки для Windows-службы
      • 944 Установка Windows-службы
    • 945 Асинхронный вызов службы из клиента
    • 947 Проектирование контрактов данных WCF
      • 948 Использование веб-ориентированного шаблона проекта WCF Service
      • 949 Реализация контракта службы
      • 951 Роль файла *.svc
      • 951 Содержимое файла Web.config
      • 951 Тестирование службы
    • 952 Резюме
  • 953 Глава 26. Введение в Windows Workflow Foundation
    • 953 Определение бизнес-процесса
      • 954 Роль WF
    • 954 Построение простого рабочего потока
      • 957 Исполняющая среда рабочих потоков
      • 957 Хостинг рабочего потока с использованием класса WorkflowInvoker
      • 960 Хостинг рабочего потока с использованием класса WorkflowApplication
      • 961 Итоги по первому рабочему потоку
    • 961 Знакомство с действиями рабочих потоков
      • 962 Действия потока управления
      • 962 Действия блок-схемы
      • 963 Действия обмена сообщениями
      • 963 Действия конечного автомата
      • 964 Действия исполняющей среды и действия-примитивы
      • 964 Действия транзакций
      • 965 Действия над коллекциями и действия обработки ошибок
    • 965 Построение рабочего потока в виде блок-схемы
      • 966 Подключение действий к блок-схеме
      • 967 Работа с действием InvokeMethod
      • 968 Определение переменных уровня рабочего потока
      • 969 Работа с действием FlowDecision
      • 970 Работа с действием TerminateWorkflow
      • 970 Построение условия True
      • 971 Работа с действием ForEach<T>
      • 973 Завершение приложения
      • 974 Промежуточные итоги
    • 975 Построение последовательного рабочего потока (в выделенной библиотеке)
      • 975 Определение начального проекта
      • 976 Импорт сборок и пространств имен
      • 977 Определение аргументов рабочего потока
      • 978 Определение переменных рабочего потока
      • 979 Работа с действием Assign
      • 980 Работа с действиями If и Switch
      • 982 Построение специального действия кода
    • 984 Использование библиотеки рабочего потока
      • 985 Извлечение выходного аргумента рабочего потока
    • 986 Резюме
  • 987 Часть VII. Windows Presentation Foundation
  • 988 Глава 27. Введение в Windows Presentation Foundation и XAML
    • 988 Мотивация, лежащая в основе WPF
      • 989 Унификация различных API-интерфейсов
      • 990 Обеспечение разделения ответственности через XAML
      • 990 Обеспечение оптимизированной модели визуализации
      • 991 Упрощение программирования сложных пользовательских интерфейсов
    • 992 Различные варианты приложений WPF
      • 992 Традиционные настольные приложения
      • 994 WPF-приложения на основе навигации
      • 994 Приложения XBAP
      • 995 Отношения между WPF и Silverlight
    • 996 Исследование сборок WPF
      • 998 Роль класса Application
      • 999 Роль класса Window
      • 999 Роль класса System.Windows.Controls.ContentControl
      • 1001 Роль класса System.Windows.Controls.Control
      • 1002 Роль класса System.Windows.FrameworkElement
      • 1002 Роль класса System.Windows.UIElement
      • 1003 Роль класса System.Windows.Media.Visual
      • 1003 Роль класса System.Windows.DependencyObject
      • 1003 Роль класса System.Windows.Threading.DispatcherObject
    • 1003 Построение приложения WPF без XAML
      • 1005 Создание строго типизированного окна
      • 1006 Создание простого пользовательского интерфейса
      • 1007 Взаимодействие с данными уровня приложения
      • 1008 Обработка закрытия объекта Window
      • 1009 Перехват событий мыши
      • 1010 Перехват клавиатурных событий
    • 1011 Построение приложения WPF с использованием только XAML
      • 1012 Определение объекта Window в XAML
      • 1014 Определение объекта Application в XAML
      • 1014 Обработка файлов XAML с помощью msbuild.exe
    • 1016 Трансформация разметки в сборку .NET
      • 1016 Отображение XAML-разметки окна на код C#
      • 1018 Роль BAML
      • 1019 Отображение XAML-разметки приложения на код C#
      • 1020 Итоговые замечания о процессе трансформирования XAML в сборку
    • 1020 Синтаксис XAML для WPF
      • 1020 Введение в Kaxaml
      • 1022 Пространства имен XAML XML и «ключевые слова» XAML
      • 1024 Управление видимостью классов и переменных-членов
      • 1024 Элементы XAML, атрибуты XAML и преобразователи типов
      • 1026 Понятие синтаксиса «свойство-элемент» в XAML
      • 1026 Понятие присоединяемых свойств XAML
      • 1027 Понятие расширений разметки XAML
    • 1029 Построение приложений WPF с использованием файлов отделенного кода
      • 1029 Добавление файла кода для класса MainWindow
      • 1030 Добавление файла кода для класса MyApp
      • 1031 Обработка файлов кода с помощью msbuild.exe
    • 1031 Построение приложений WPF с использованием Visual Studio
      • 1032 Шаблоны проектов WPF
      • 1032 Панель инструментов и визуальный конструктор/редактор XAML
      • 1034 Установка свойств с использованием окна Properties
      • 1034 Обработка событий с использованием окна Properties
      • 1035 Обработка событий в редакторе XAML
      • 1036 Окно Document Outline
      • 1036 Просмотр автоматически сгенерированных файлов кода
    • 1036 Построение специального редактора XAML с помощью Visual Studio
      • 1037 Проектирование графического пользовательского интерфейса окна
      • 1038 Реализация события Loaded
      • 1039 Реализация события Click объекта Button
      • 1040 Реализация события Closed
      • 1040 Тестирование приложения
      • 1041 Изучение документации WPF
    • 1042 Резюме
  • 1043 Глава 28. Программирование с использованием элементов управления WPF
    • 1043 Обзор основных элементов управления WPF
      • 1044 Элементы управления Ink API
      • 1045 Элементы управления документов WPF
      • 1045 Общие диалоговые окна WPF
      • 1045 Подробные сведения находятся в документации
    • 1046 Краткий обзор визуального конструктора WPF в Visual Studio
      • 1047 Работа с элементами управления WPF в Visual Studio
      • 1047 Работа с редактором Document Outline
    • 1048 Управление компоновкой содержимого с использованием панелей
      • 1051 Позиционирование содержимого внутри панелей Canvas
      • 1052 Позиционирование содержимого внутри панелей WrapPanel
      • 1053 Позиционирование содержимого внутри панелей StackPanel
      • 1054 Позиционирование содержимого внутри панелей Grid
      • 1057 Позиционирование содержимого внутри панелей DockPanel
      • 1058 Включение прокрутки в типах панелей
      • 1058 Конфигурирование панелей с использованием визуальных конструкторов Visual Studio
    • 1061 Построение окна с использованием вложенных панелей
      • 1062 Построение системы меню
      • 1065 Построение панели инструментов
      • 1066 Построение строки состояния
      • 1066 Завершение проектирования пользовательского интерфейса
      • 1067 Реализация обработчиков событий MouseEnter/MouseLeave
      • 1067 Реализация логики проверки правописания
    • 1068 Понятие команд WPF
      • 1068 Объекты внутренних команд
      • 1069 Подключение команд к свойству Command
      • 1070 Подключение команд к произвольным действиям
      • 1071 Работа с командами Open и Save
    • 1073 Более глубокий взгляд на API-интерфейсы и элементы управления WPF
      • 1074 Работа с элементом управления TabControl
    • 1075 Построение вкладки Ink API
      • 1076 Проектирование панели инструментов
      • 1078 Элемент управления RadioButton
      • 1078 Обработка событий для вкладки Ink API
      • 1080 Элемент управления InkCanvas
      • 1082 Элемент управления ComboBox
      • 1084 Сохранение, загрузка и очистка данных InkCanvas
    • 1085 Введение в интерфейс Documents API
      • 1085 Блочные элементы и встроенные элементы
      • 1085 Диспетчеры компоновки документа
    • 1086 Построение вкладки Documents
      • 1087 Наполнение FlowDocument с помощью кода
      • 1088 Включение аннотаций и «клейких» заметок
      • 1089 Сохранение и загрузка потокового документа
    • 1091 Введение в модель привязки данных WPF
      • 1091 Построение вкладки Data Binding
      • 1092 Установка привязки данных с использованием Visual Studio
      • 1093 Свойство DataContext
      • 1094 Преобразование данных с использованием IValueConverter
      • 1095 Установка привязок данных в коде
      • 1096 Построение вкладки DataGrid
    • 1097 Резюме
  • 1098 Глава 29. Службы визуализации графики WPF
    • 1098 Службы графической визуализации WPF
      • 1099 Варианты графической визуализации WPF
    • 1100 Визуализация графических данных с использованием фигур
      • 1102 Добавление прямоугольников, эллипсов и линий на поверхность Canvas
      • 1105 Удаление прямоугольников, эллипсов и линий с поверхности Canvas
      • 1106 Работа с элементами Polyline и Polygon
      • 1107 Работа с элементом Path
    • 1110 Кисти и перья WPF
      • 1111 Конфигурирование кистей с использованием Visual Studio
      • 1112 Конфигурирование кистей в коде
      • 1113 Конфигурирование перьев
    • 1114 Применение графических трансформаций
      • 1115 Первый взгляд на трансформации
      • 1115 Трансформация данных Canvas
    • 1118 Работа с редактором трансформаций Visual Studio
      • 1118 Построение начальной компоновки
      • 1119 Применение трансформаций на этапе проектирования
      • 1120 Трансформация холста в коде
    • 1121 Визуализация графических данных с использованием рисунков и геометрий
      • 1122 Построение кисти DrawingBrush с использованием геометрий
      • 1123 Рисование с помощью DrawingBrush
      • 1124 Включение типов Drawing в DrawingImage
    • 1125 Роль инструмента Expression Design
      • 1125 Экспорт файла с примером графики в виде XAML
      • 1127 Импорт графических данных в проект WPF
      • 1128 Взаимодействие с объектами изображения
    • 1129 Визуализация графических данных с использованием визуального уровня
      • 1129 Базовый класс Visual и производные дочерние классы
      • 1130 Первый взгляд на класс DrawingVisual
      • 1132 Визуализация графических данных в специальном диспетчере компоновки
      • 1133 Реагирование на операции проверки попадания
    • 1135 Резюме
  • 1136 Глава 30. Ресурсы, анимация и стили WPF
    • 1136 Система ресурсов WPF
      • 1137 Работа с двоичными ресурсами
      • 1139 Программная загрузка изображения
    • 1142 Работа с объектными (логическими) ресурсами
      • 1142 Роль свойства Resources
      • 1142 Определение ресурсов уровня окна
      • 1145 Расширение разметки {StaticResource}
      • 1145 Расширение разметки {DynamicResource}
      • 1146 Ресурсы уровня приложения
      • 1147 Определение объединенных словарей ресурсов
      • 1148 Определение сборки, включающей только ресурсы
    • 1150 Службы анимации WPF
      • 1150 Роль классов анимации
      • 1151 Свойства To, From и By
      • 1152 Роль базового класса Timeline
      • 1152 Реализация анимации в коде C#
      • 1153 Управление темпом анимации
      • 1154 Запуск в обратном порядке и циклическое выполнение анимации
    • 1155 Реализация анимации в разметке XAML
      • 1156 Роль раскадровок
      • 1156 Роль триггеров событий
      • 1157 Анимация с использованием дискретных ключевых кадров
    • 1158 Роль стилей WPF
      • 1158 Определение и применение стиля
      • 1159 Переопределение настроек стиля
      • 1159 Автоматическое применение стиля с помощью TargetType
      • 1160 Создание подклассов существующих стилей
      • 1160 Роль неименованных стилей
      • 1161 Определение стилей с триггерами
      • 1162 Определение стилей с несколькими триггерами
      • 1162 Анимированные стили
      • 1163 Применение стилей в коде
    • 1164 Резюме
  • 1165 Глава 31. Свойства зависимости, маршрутизируемые события и шаблоны
    • 1165 Роль свойств зависимости
      • 1167 Знакомство с существующим свойством зависимости
      • 1170 Важные замечания относительно оболочек свойств CLR
    • 1170 Построение специального свойства зависимости
      • 1174 Добавление процедуры проверки достоверности данных
      • 1175 Реагирование на изменение свойства
    • 1176 Маршрутизируемые события
      • 1177 Роль маршрутизируемых пузырьковых событий
      • 1177 Продолжение или прекращение пузырькового распространения
      • 1178 Роль маршрутизируемых туннельных событий
    • 1180 Логические деревья, визуальные деревья и стандартные шаблоны
      • 1180 Программный просмотр логического дерева
      • 1181 Программный просмотр визуального дерева
      • 1183 Программный просмотр стандартного шаблона элемента управления
    • 1186 Построение специального шаблона элемента управления с помощью инфраструктуры триггеров
      • 1187 Шаблоны как ресурсы
      • 1188 Встраивание визуальных подсказок с использованием триггеров
      • 1189 Роль расширения разметки {TemplateBinding}
      • 1190 Роль класса ContentPresenter
      • 1191 Включение шаблонов в стили
    • 1192 Резюме
  • 1193 Часть VIII. ASP.NET Web Forms
  • 1194 Глава 32. Введение в ASP.NET Web Forms
    • 1194 Роль протокола HTTP
      • 1195 Цикл запрос/ответ HTTP
      • 1195 HTTP — протокол без хранения состояния
    • 1195 Веб-приложения и веб-серверы
      • 1196 Роль виртуальных каталогов IIS
      • 1197 Веб-сервер разработки ASP.NET
    • 1197 Роль языка HTML
      • 1198 Структура HTML-документа
      • 1199 Роль форм HTML
      • 1199 Инструменты визуального конструктора HTML в Visual Studio
      • 1200 Построение HTML-формы
    • 1202 Роль сценариев клиентской стороны
      • 1203 Пример сценария клиентской стороны
    • 1204 Обратная отправка веб-серверу
      • 1205 Обратные отправки в ASP.NET
    • 1205 Обзор API-интерфейса ASP.NET
      • 1206 Основные функциональные возможности ASP.NET 2.0 и последующих версий
      • 1207 Основные функциональные возможности ASP.NET 3.5 (и .NET 3.5 SP1) и последующих версий
      • 1208 Основные функциональные возможности ASP.NET 4.0 и 4.5
    • 1208 Построение однофайловой веб-страницы ASP.NET
      • 1210 Указание сборки AutoLotDAL.dll
      • 1210 Проектирование пользовательского интерфейса
      • 1211 Добавление логики доступа к данным
      • 1213 Роль директив ASP.NET
      • 1214 Анализ блока script
      • 1215 Анализ объявлений элементов управления ASP.NET
    • 1216 Построение веб-страницы ASP.NET с использованием файлов кода
      • 1218 Ссылка на сборку AutoLotDAL.dll
      • 1218 Изменение файла кода
      • 1219 Отладка и трассировка страниц ASP.NET
    • 1220 Сравнение веб-сайтов и веб-приложений ASP.NET
    • 1222 Структура каталогов веб-сайта ASP.NET
      • 1222 Ссылка на сборки
      • 1223 Роль папки App_Code
    • 1223 Цепочка наследования для типа Page
    • 1225 Взаимодействие с входящим HTTP-запросом
      • 1226 Получение статистики о браузере
      • 1227 Доступ к входным данным формы
      • 1227 Свойство IsPostBack
    • 1228 Взаимодействие с исходящим HTTP-ответом
      • 1229 Выдача HTML-содержимого
      • 1229 Перенаправление пользователей
    • 1230 Жизненный цикл веб-страницы ASP.NET
      • 1231 Роль атрибута AutoEventWireup
      • 1231 Событие Error
    • 1233 Роль файла web.config
      • 1234 Утилита администрирования веб-сайтов ASP.NET
    • 1234 Резюме
  • 1235 Глава 33. Веб-элементы управления, мастер-страницы и темы ASP.NET
    • 1235 Природа веб-элементов управления
      • 1236 Обработка событий серверной стороны
      • 1237 Свойство AutoPostBack
    • 1238 Базовые классы Control и WebControl
      • 1238 Перечисление содержащихся элементов управления
      • 1241 Динамическое добавление и удаление элементов управления
      • 1242 Взаимодействие с динамически созданными элементами управления
      • 1243 Функциональность базового класса WebControl
    • 1243 Основные категории веб-элементов управления ASP.NET
      • 1245 Несколько слов о пространстве имен System.Web.UI.HtmlControls
      • 1245 Документация по веб-элементам управления
    • 1245 Построение примера веб-сайта ASP.NET
      • 1246 Работа с мастер-страницами
      • 1252 Определение стандартной страницы содержимого Default.aspx
      • 1254 Проектирование страницы содержимого Inventory.aspx
      • 1258 Проектирование страницы содержимого BuildCar.aspx
    • 1261 Роль элементов управления проверкой достоверности
      • 1263 Включение поддержки проверки достоверности с помощью JavaScript на стороне клиента
      • 1263 Элемент управления RequiredFieldValidator
      • 1264 Элемент управления RegularExpressionValidator
      • 1264 Элемент управления RangeValidator
      • 1264 Элемент управления CompareValidator
      • 1265 Создание итоговой панели проверки достоверности
      • 1266 Определение групп проверки достоверности
    • 1268 Работа с темами
      • 1269 Файлы *.skin
      • 1271 Применение тем ко всему сайту
      • 1271 Применение тем на уровне страницы
      • 1271 Свойство SkinID
      • 1272 Программное назначение тем
    • 1273 Резюме
  • 1274 Глава 34. Управление состоянием в ASP.NET
    • 1274 Проблема поддержки состояния
    • 1276 Приемы управления состоянием ASP.NET
    • 1277 Роль состояния представления ASP.NET
      • 1277 Демонстрация работы с состоянием представления
      • 1279 Добавление специальных данных в состояние представления
    • 1279 Роль файла Global.asax
      • 1281 Глобальный обработчик исключений «последнего шанса»
      • 1282 Базовый класс HttpApplication
    • 1282 Различие между состоянием приложения и состоянием сеанса
      • 1282 Поддержка данных состояния уровня приложения
      • 1285 Модификация данных приложения
      • 1286 Обработка останова веб-приложения
    • 1286 Работа с кешем приложения
      • 1287 Использование кеширования данных
      • 1289 Модификация файла *.aspx
    • 1291 Поддержка данных сеанса
      • 1293 Дополнительные члены класса HttpSessionState
    • 1294 Cookie-наборы
      • 1295 Создание cookie-наборов
      • 1296 Чтение входящих cookie-данных
    • 1297 Роль элемента <sessionState>
      • 1297 Хранение данных сеанса на сервере состояния сеансов ASP.NET
      • 1298 Хранение информации о сеансах в выделенной базе данных
    • 1299 Введение в API-интерфейс ASP.NET Profile
      • 1299 База данных ASPNETDB.mdf
      • 1300 Определение пользовательского профиля в web.config
      • 1301 Программный доступ к данным профиля
      • 1303 Группирование данных профиля и сохранение специальных объектов
    • 1305 Резюме
  • 1306 Предметный указатель

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

Поиск книг:




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

Статистика: