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