Язык программирования 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 Резюме
- 44 Начальное знакомство с платформой .NET
- 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 Резюме
- 78 Роль .NET Framework 4.5 SDK
- 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 Резюме
- 104 Структура простой программы C#
- 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 Резюме
- 146 Методы и модификаторы параметров
- 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 Резюме
- 182 Знакомство с типом класса C#
- 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 Резюме
- 227 Базовый механизм наследования
- 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 Резюме
- 287 Понятие интерфейсных типов
- 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 Резюме
- 322 Побудительные причины создания классов коллекций
- 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 Резюме
- 391 Понятие методов-индексаторов
- 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 Резюме
- 426 Программные конструкции, специфичные для LINQ
- 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 Резюме
- 482 Определение специальных пространств имен
- 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 Резюме
- 528 Потребность в метаданных типов
- 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 Резюме
- 567 Роль ключевого слова dynamic языка C#
- 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 Резюме
- 588 Роль процесса Windows
- 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 Резюме
- 653 Отношения между процессом, доменом приложения, контекстом и потоком
- 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 Резюме
- 745 Высокоуровневое определение ADO.NET
- 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 Резюме
- 850 Роль Entity Framework
- 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 Резюме
- 884 История о двух API-интерфейсах XML
- 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 Резюме
- 899 Собрание API-интерфейсов распределенных вычислений
- 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 Резюме
- 953 Определение бизнес-процесса
- 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 Резюме
- 988 Мотивация, лежащая в основе WPF
- 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 Резюме
- 1043 Обзор основных элементов управления WPF
- 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 Резюме
- 1098 Службы графической визуализации WPF
- 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 Резюме
- 1136 Система ресурсов WPF
- 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 Резюме
- 1165 Роль свойств зависимости
- 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 Резюме
- 1194 Роль протокола HTTP
- 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 Резюме
- 1235 Природа веб-элементов управления
- 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 совершенно бесплатно.