Язык программирования С# 2008 и платформа .NET 3.5

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

Версия .NET 3.5 привнесла с собой как десятки новых языковых средств C#, так и множество новых API-интерфейсов .NET. В этой книге вы найдете полное описание всех нововведений в характерной для автора дружественной к читателю манере. Помимо прочего, подробно рассматривается язык LINQ, изменения, появившиеся в новой версии языка C# 2008 (автоматические свойства, методы расширений, анонимные типы и т.д.), а также множество функциональных средств среды Visual Studio 2008.

Благодаря этой книге, вы изучите:

  • все, что необходимо для быстрого и эффективного перехода на новую версию языка C# 2008;
  • все новые возможности и средства .NET 3.5 - LINQ, анонимные типы, методы расширений, автоматические свойства и т.п.;
  • все, что требуется для построения приложений профессионального уровня;
  • все, что позволит стать экспертом во всех аспектах .NET 3.5, включая сборки, удаленное выполнение, Windows Forms, Web Forms, WPF, WCF, WF, ADO.NET, веб-службы XML и многое другое.

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

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

ISBN 978-5-8459-1589-4, 978-1-59-059884-9

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

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

  • 31 Об авторе
  • 31 О техническом редакторе
  • 31 Благодарности
  • 32 Введение
    • 32 Автор и читатель — одна команда
    • 33 Краткий обзор содержания
      • 33 Часть I. Общие сведения о языке C# и платформе .NET
      • 34 Часть II. Главные конструкции программирования на C#
      • 35 Часть III. Дополнительные конструкции программирования на C#
      • 36 Часть IV. Программирование с использованием сборок .NET
      • 38 Часть V. Введение в библиотеки базовых классов .NET
      • 39 Часть VI. Настольные пользовательские интерфейсы
      • 40 Часть VII. Построение веб-приложений с использованием ASP.NET
      • 41 Часть VIII. Приложения
    • 42 Исходный код примеров
    • 42 От издательства
  • 43 ЧАСТЬ I. Общие сведения о языке C# и платформе .NET
  • 44 Глава 1. Философия .NET
    • 44 Предыдущее состояние дел
      • 45 Подход C/Win32 API
      • 45 Подход C++/MFC
      • 45 Подход Visual Basic 6.0
      • 46 Подход Java/J2EE
      • 46 Подход COM
      • 47 Подход Windows DNA
    • 48 Решение .NET
    • 48 Знакомство с главными компонентами платформы .NET (CLR, CTS и CLS)
      • 49 Роль библиотек базовых классов
    • 49 Что привносит язык C#
    • 51 Другие языки программирования с поддержкой .NET
      • 53 Жизнь в многоязычном окружении
    • 53 Что собой представляют сборки в .NET
      • 55 Однофайловые и многофайловые сборки
      • 55 Роль CIL
      • 57 Преимущества CIL
      • 58 Компиляция CIL-кода в инструкции, ориентированные на конкретную платформу
    • 58 Роль метаданных типов .NET
    • 59 Роль манифеста сборки
    • 60 Что собой представляет общая система типов (CTS)
      • 60 Типы классов
      • 61 Типы интерфейсов
      • 61 Типы структур
      • 62 Типы перечислений
      • 62 Типы делегатов
      • 62 Члены типов
      • 63 Встроенные типы данных CTS
    • 64 Что собой представляет общеязыковая спецификация (CLS)
      • 6 Обеспечение гарантии соответствия CLS
    • 66 Что собой представляет общеязыковая исполняющая среда (CLR)
    • 67 Различия между сборками, пространствами имен и типами
      • 70 Роль, которую исполняют пространства имен Microsoft
      • 71 Получение доступа к пространствам имен программным образом
      • 72 Добавление ссылок на внешние сборки
    • 73 Изучение сборки с помощью утилиты ildasm.exe
      • 74 Просмотр CIL-кода
      • 74 Просмотр метаданных типов
      • 74 Просмотр метаданных сборки (т.е. манифеста)
    • 75 Изучение сборки с помощью утилиты Reflector
    • 76 Развертывание исполняющей среды .NET
    • 76 Не зависимая от платформы природа .NET
    • 78 Резюме
  • 79 Глава 2. Создание приложений на языке C#
    • 79 Роль, которую исполняет .NET Framework 3.5 SDK
      • 80 Окно командной строки Visual Studio
    • 81 Построение приложений на C# с использованием csc.exe
      • 82 Указание целевых входных и выходных параметров
      • 83 Добавление ссылок на внешние сборки
      • 84 Добавление ссылок на несколько внешних сборок
      • 84 Компиляция нескольких файлов исходного кода
      • 85 Работа с ответными файлами в C#
    • 87 Создание .NET-приложений с использованием TextPad
      • 87 Активизация функции выделения ключевых слов C# цветом
      • 87 Настройка фильтра файлов *.cs
      • 89 Подключение к csc.exe
      • 90 Ассоциирование команд выполнения с пунктами меню
    • 91 Создание приложений .NET с использованием Notepad++
      • 92 Настройка списка вариантов для автоматического завершения кода
    • 92 Создание .NET-приложений с использованием SharpDevelop
      • 93 Построение простого тестового проекта
    • 95 Создание .NET-приложений с использованием Visual C# 2008 Express
      • 95 Некоторые уникальные функциональные возможности Visual C# Express
    • 96 Создание .NET-приложений с использованием Visual Studio 2008
      • 97 Некоторые уникальные функциональные возможности Visual Studio 2008
      • 97 Ориентирование на .NET Framework с использованием диалогового окна New Project
      • 98 Использование утилиты Solution Explorer
      • 100 Утилита Class View
      • 100 Утилита Object Browser
      • 101 Встроенная поддержка для рефакторинга программного кода
      • 103 Возможности для расширения и завертывания кода в определенный контекст
      • 104 Утилита Class Designer
      • 107 Инструмент Object Test Bench
      • 108 Интегрированная система документации .NET Framework 3.5
    • 109 Дополнительные средства разработки .NET-приложений
    • 109 Резюме
  • 111 ЧАСТЬ II. Главные конструкции программирования на C#
  • 112 Глава 3. Главные конструкции программирования на C#: часть I
    • 112 Разбор простой программы на C#
      • 114 Варианты метода Main()
      • 114 Спецификация кода ошибки в приложении
      • 116 Обработка аргументов командной строки
      • 118 Указание аргументов командной строки в Visual Studio 2008
    • 118 Интересное отклонение от темы: некоторые дополнительные члены класса System.Environment
    • 119 Класс System.Console
      • 120 Базовый ввод и вывод с помощью Console
      • 121 Форматирование консольного вывода
      • 122 Форматирование числовых данных
      • 123 Форматирование числовых данных за пределами консольных приложений
    • 124 Системные типы данных и их сокращенное обозначение в C#
      • 125 Объявление и инициализация переменных
      • 127 Применение ключевого слова new для внутренних типов данных
      • 127 Иерархия классов типов данных
      • 129 Члены числовых типов данных
      • 130 Члены System.Boolean
      • 130 Члены System.Char
      • 131 Выполнение синтаксического анализа значений из строковых данных
    • 131 Тип System.String
      • 132 Базовые операции манипулирования строками
      • 133 Конкатенация строк
      • 134 Управляющие последовательности символов
      • 135 Определение дословных строк
      • 135 Строки и равенство
      • 136 Неизменная природа строк
      • 138 Тип System.Text.StringBuilder
      • 139 Типы System.DateTime и System.TimeSpan
    • 140 Сужающие и расширяющие преобразования типов данных
      • 142 Перехват сужающих преобразований данных
      • 144 Настройка проверки переполнения в масштабах всего проекта
      • 145 Ключевое слово unchecked
      • 145 Роль System.Convert
    • 145 Итерационные конструкции в С#
      • 146 Цикл for
      • 146 Цикл foreach
      • 147 Конструкции while и do/while
    • 147 Конструкции принятия решений и операции отношения и равенства
      • 148 Оператор if/else
      • 149 Оператор switch
    • 150 Резюме
  • 151 Глава 4. Главные конструкции программирования на C#: часть II
    • 151 Методы и модификаторы параметров
      • 152 Используемое по умолчанию поведение для передачи параметров
      • 153 Модификатор out
      • 154 Модификатор ref
      • 155 Модификатор params
    • 157 Перегрузка методов
    • 159 Манипулирование массивами в C#
      • 160 Синтаксис инициализации массивов в C#
      • 161 Определение массива объектов
      • 162 Работа с многомерными массивами
      • 163 Использование массивов в качестве параметров (и возвращаемых значений)
      • 164 Базовый класс System.Array
    • 165 Тип enum
      • 166 Управление базовым типом, используемым для хранения значений перечислений
      • 167 Объявление и использование перечислений
      • 168 Тип System.Enum
      • 168 Динамическое обнаружение пар имя/значение перечисления
    • 171 Типы структур
      • 172 Создание переменных структур
    • 173 Типы-значения и ссылочные типы
      • 174 Типы-значения, ссылочные типы и операция присваивания
      • 176 Типы-значения, содержащие ссылочные типы
      • 178 Передача ссылочных типов по значению
      • 179 Передача ссылочных типов по ссылке
      • 180 Типы-значения и ссылочные типы: заключительные детали
    • 181 Нулевые типы в C#
      • 183 Работа с нулевыми типами
      • 183 Операция ??
    • 184 Резюме
  • 185 Глава 5. Определение инкапсулированных типов классов
    • 185 Знакомство с типом класса C#
      • 187 Размещение объектов с помощью ключевого слова new
    • 188 Понятие конструктора класса
      • 189 Роль конструктора по умолчанию
      • 189 Определение специальных конструкторов
      • 190 Еще раз о конструкторе по умолчанию
    • 191 Роль ключевого слова this
      • 193 Построение цепочки вызовов конструкторов с использованием this
      • 195 Обзор потока конструктора
    • 196 Понятие ключевого слова static
      • 197 Определение статических методов (и полей)
      • 197 Определение статических данных
      • 200 Определение статических конструкторов
      • 201 Определение статических классов
    • 203 Основы объектно-ориентированного программирования
      • 203 Роль инкапсуляции
      • 204 Роль наследования
      • 205 Роль полиморфизма
    • 206 Модификаторы доступа C#
      • 207 Модификаторы доступа по умолчанию
      • 208 Модификаторы доступа и вложенные типы
    • 208 Первый принцип: службы инкапсуляции C#
      • 209 Инкапсуляция с использованием традиционных методов доступа и изменения
      • 210 Инкапсуляция с использованием свойств типа
      • 212 Внутреннее представление свойств
      • 214 Управление уровнями видимости операторов get/set свойств
      • 214 Свойства, доступные только для чтения и только для записи
      • 215 Статические свойства
    • 216 Понятие константных данных
    • 217 Понятие полей только для чтения
      • 218 Статические поля только для чтения
    • 218 Понятие частичных типов
    • 219 Документирование исходного кода C# посредством XML
      • 221 Генерация файла XML
      • 223 Трансформация XML-комментариев кода посредством NDoc
    • 224 Визуализация плодов нашего труда
    • 225 Резюме
  • 226 Глава 6. Понятия наследования и полиморфизма
    • 226 Базовый механизм наследования
      • 227 Спецификация родительского класса
      • 228 О множественном наследовании
      • 229 Ключевое слово sealed
    • 230 Изменение диаграмм классов Visual Studio
    • 231 Второй принцип: подробности о наследовании
      • 233 Управление созданием базового класса с помощью ключевого слова base
      • 235 Хранение фамильных тайн: ключевое слово protected
      • 235 Добавление герметизированного класса
    • 236 Реализация модели включения/делегации
      • 238 Понятие определения вложенных типов
    • 239 Третий принцип: поддержка полиморфизма в C#
      • 240 Ключевые слова virtual и override
      • 242 Переопределение виртуальных членов в Visual Studio 2008
      • 243 Герметизированные виртуальные члены
      • 243 Понятие абстрактных классов
      • 245 Построение полиморфного интерфейса
      • 248 Понятие сокрытия членов
    • 250 Понятие правил приведения к базовому и производному классу
      • 251 Ключевое слово as
      • 252 Ключевое слово is
    • 252 Родительский главный класс System.Object
      • 255 Переопределение System.Object.ToString()
      • 256 Переопределение System.Object.Equals()
      • 257 Переопределение System.Object.GetHashCode()
      • 257 Тестирование модифицированного класса Person
      • 258 Статические члены System.Object
    • 258 Резюме
  • 259 Глава 7. Структурированная обработка исключений
    • 259 Ода ошибкам и исключениям
    • 260 Роль обработки исключений в .NET
      • 261 Элементы обработки исключений в .NET
      • 262 Базовый класс System.Exception
    • 263 Простейший пример
      • 265 Выдача обобщенного исключения
      • 266 Перехват исключений
    • 267 Конфигурирование состояния исключения
      • 267 Свойство TargetSite
      • 268 Свойство StackTrace
      • 269 Свойство HelpLink
      • 270 Свойство Data
    • 271 Исключения системного уровня (System.SystemException)
    • 272 Исключения уровня приложения (System.ApplicationException)
      • 273 Создание специальных исключений, способ первый
      • 275 Создание специальных исключений, способ второй
      • 276 Создание специальных исключений, способ третий
    • 277 Обработка множества исключений
      • 279 Обобщенные операторы catch
      • 279 Передача исключений
      • 280 Внутренние исключения
    • 281 Блок finally
    • 282 Какие исключения могут выдавать методы
    • 283 К чему приводят необработанные исключения
    • 283 Отладка необработанных исключений в Visual Studio
    • 284 Резюме
  • 285 Глава 8. Время жизни объектов
    • 285 Классы, объекты и ссылки
    • 286 Базовые сведения о времени жизни объектов
      • 287 CIL-код для new
      • 288 Установка для объектных ссылок значения null
    • 289 Роль, которую исполняют корневые элементы приложения
    • 291 Поколения объектов
    • 292 Тип System.GC
      • 293 Принудительная активизация процесса сборки мусора
    • 296 Создание финализируемых объектов
      • 297 Переопределение System.Object.Finalize()
      • 299 Детали процесса финализации
    • 299 Создание самоочищаемых объектов
      • 302 Повторное использование ключевого слова using в C#
    • 303 Создание финализируемых и самоочищаемых типов
      • 304 Формализованный шаблон очистки
    • 306 Резюме
  • 307 ЧАСТЬ III. Дополнительные конструкции программирования на C#
  • 308 Глава 9. Работа с интерфейсами
    • 308 Что собой представляют типы интерфейсов
      • 310 Сравнение типов интерфейсов с абстрактными базовыми классами
    • 312 Определение специальных интерфейсов
    • 314 Реализация интерфейса
    • 316 Вызов членов интерфейса на уровне объектов
      • 317 Получение ссылок на интерфейсы с помощью ключевого слова as
      • 317 Получение ссылок на интерфейсы с помощью ключевого слова is
    • 318 Использование интерфейсов в качестве параметров
    • 319 Использование интерфейсов в качестве возвращаемых значений
    • 320 Массивы типов интерфейсов
    • 321 Реализация интерфейсов в Visual Studio 2008
    • 322 Устранение конфликтов на уровне имен за счет явной реализации интерфейсов
    • 325 Проектирование иерархий интерфейсов
      • 326 Множественное наследование в случае типов интерфейсов
    • 328 Создание перечислимых типов (IEnumerable и IEnumerator)
      • 331 Создание методов итераторов с использованием ключевого слова yield
      • 332 Создание именованного итератора
      • 333 Внутреннее представление метода итератора
    • 334 Создание клонируемых объектов (ICloneable)
      • 336 Более сложный пример клонирования
    • 339 Создание сравнимых объектов (IComparable)
      • 341 Указание нескольких критериев для сортировки (IComparer)
      • 343 Использование специальных свойств и специальных типов для сортировки
    • 343 Интерфейсы обратного вызова
    • 347 Резюме
  • 348 Глава 10. Коллекции и обобщения
    • 348 Интерфейсы пространства имен System.Collections
      • 349 Роль ICollection
      • 350 Роль IDictionary
      • 350 Роль IDictionaryEnumerator
      • 351 Роль IList
    • 351 Типы классов System.Collections
      • 352 Работа с типом ArrayList
      • 353 Работа с типом Queue
      • 354 Работа с типом Stack
    • 355 Пространство имен System.Collections.Specialized
    • 356 Связь между упаковкой, распаковкой и System.Object
      • 358 Проблема с операциями упаковки/распаковки
    • 359 Проблема безопасности типов и строго типизированные коллекции
      • 359 Построение специальной коллекции
      • 361 Проблемы упаковки и строго типизированные коллекции
    • 363 Пространство имен System.Collections.Generic
      • 364 Исследование типа List<T>
    • 366 Создание специальных обобщенных методов
      • 367 Выведение параметра-типа
    • 369 Создание обобщенных структур и классов
      • 369 Ключевое слово default в обобщенном коде
    • 371 Создание специальной обобщенной коллекции
      • 372 Ограничения специальных обобщенных коллекций
      • 373 Ограничение параметров-типов с помощью ключевого слова where
      • 375 Недостаток ограничений операций
    • 375 Создание обобщенных базовых классов
    • 376 Создание обобщенных интерфейсов
    • 378 Резюме
  • 379 Глава 11. Делегаты, события и лямбда-выражения
    • 379 Понятие типа делегата .NET
    • 380 Определение делегата на C#
    • 382 Базовые классы System.MulticastDelegate и System.Delegate
    • 384 Простейший из возможных пример делегата
      • 385 Исследование объекта делегата
    • 386 Усовершенствование типа Car с помощью делегатов
      • 389 Включение группового вызова
      • 390 Удаление цели из списка вызовов делегата
    • 391 Более сложный пример делегата
      • 392 Делегаты как параметры
      • 394 Анализ кода делегата
    • 395 Понятие ковариантности делегатов
    • 397 Создание обобщенных делегатов
      • 398 Эмуляция обобщенных делегатов без обобщений
    • 399 Понятие событий C#
      • 400 Ключевое слово event
      • 401 «За кулисами» событий
      • 402 Прослушивание входящих событий
      • 403 Упрощенная регистрация событий с использованием Visual Studio 2008
      • 404 Аккуратное и правильное событие
    • 406 Обобщенный делегат EventHandler<T>
    • 406 Понятие анонимных методов C#
      • 408 Доступ к «внешним» переменным
    • 408 Понятие групповых преобразований методов
    • 410 Лямбда-операция C# 2008
      • 412 Анализ лямбда-выражения
      • 413 Обработка аргументов внутри множественных операторов
      • 414 Усовершенствование примера CarDelegate с использованием лямбда-выражений
      • 415 Лямбда-выражения с несколькими (или нулем) параметров
    • 417 Резюме
  • 418 Глава 12. Индексаторы, операции и указатели
    • 418 Понятие методов-индексаторов
      • 420 Индексация объектов с использованием строковых значений
      • 421 Перегруженные методы-индексаторы
      • 422 Внутреннее представление методов-индексаторов
      • 422 Многомерные индексаторы
      • 423 Определения индексаторов в интерфейсных типах
    • 423 Понятие перегрузки операций
      • 424 Перегрузка бинарных операций
      • 426 А как насчет операций += и -=?
      • 427 Перегрузка унарных операций
      • 428 Перегрузка операций эквивалентности
      • 428 Перегрузка операций сравнения
      • 429 Внутреннее представление перегруженных операций
      • 431 Финальные соображения относительно перегрузки операций
    • 432 Понятие преобразований пользовательских типов
      • 432 Числовые преобразования
      • 432 Преобразования между связанными типами классов
      • 433 Создание специальных процедур преобразования
      • 435 Дополнительные явные преобразования типа Square
      • 436 Определение процедур неявного преобразования
      • 437 Внутреннее представление процедур пользовательских преобразований
    • 438 Работа с типами указателей
      • 440 Ключевое слово unsafe
      • 441 Работа с операциями * и &
      • 441 Небезопасная и безопасная функции Swap
      • 442 Доступ к полям через указатели (операция ->)
      • 443 Ключевое слово stackalloc
      • 443 Закрепление типа ключевым словом fixed
      • 444 Ключевое слово sizeof
    • 445 Директивы препроцессора C#
      • 445 Указание областей кода
      • 446 Условная компиляция кода
    • 448 Резюме
  • 449 Глава 13. Средства языка C# 2008
    • 449 Понятие неявно типизированных локальных переменных
      • 450 Использование var внутри конструкций foreach
      • 451 Ограничения неявно типизированных переменных
      • 452 Неявно типизированные локальные массивы
      • 453 Неявно типизированные данные — это строго типизированные данные
      • 453 Удобство неявно типизированных локальных переменных
    • 454 Понятие автоматических свойств
      • 455 Взаимодействие с автоматическими свойствами
      • 456 Ограничение доступа к автоматическим свойствам
      • 456 Автоматические свойства и значения по умолчанию
    • 457 Понятие расширяющих методов
      • 458 Определение расширяющих методов
      • 459 Вызов расширяющих методов на уровне экземпляра
      • 460 Статический вызов расширяющих методов
      • 460 Область действия расширяющего метода
      • 461 Импорт типов, определяющих расширяющие методы
      • 462 Расширяющие методы в IntelliSense
      • 463 Построение и использование расширяющих библиотек
      • 464 Расширение интерфейсных типов посредством расширяющих методов
    • 466 Понятие частичных методов
      • 466 Первый взгляд на частичные методы
      • 468 Применение частичных методов
    • 468 Синтаксис инициализаторов объектов
      • 470 Вызов специальных конструкторов с синтаксисом инициализации
      • 471 Инициализация вложенных типов
      • 472 Понятие инициализации коллекций
    • 472 Понятие анонимных типов
      • 473 Внутреннее представление анонимных типов
      • 475 Реализация ToString() и GetHashCode()
      • 475 Семантика эквивалентности анонимных типов
      • 477 Анонимные типы, содержащие в себе анонимные типы
    • 477 Резюме
  • 478 Глава 14. Введение в LINQ
    • 478 Роль LINQ
      • 479 Выражения LINQ — строго типизированы и расширяемы
      • 480 Основные сборки LINQ
    • 481 Первый взгляд на выражения запросов LINQ
      • 483 LINQ и неявно типизированные локальные переменные
      • 484 LINQ и расширяющие методы
      • 485 Роль отложенного выполнения
      • 486 Роль немедленного выполнения
    • 487 LINQ и обобщенные коллекции
      • 487 Применение выражения LINQ
      • 488 LINQ и необобщенные коллекции
      • 489 Фильтрация данных с использованием OfTyle<T>()
    • 489 Внутреннее представление операций запросов LINQ
      • 490 Построение выражений запросов из операций запросов
      • 491 Построение выражений запросов с использованием типа Enumerable и лямбда-выражений
      • 492 Построение выражений запросов с использованием перечислимого типа и анонимных методов
      • 492 Построение выражений запросов с использованием перечислимого типа и «сырых» делегатов
    • 493 Исследование операций запросов C# LINQ
      • 494 Получение счетчиков с использованием Enumerable
      • 495 Построение нового тестового проекта
    • 500 Запросы LINQ: вещь в себе?
      • 501 Трансформация результатов запроса в типы массивов
    • 502 Резюме
  • 503 ЧАСТЬ IV. Программирование с использованием сборок .NET
  • 504 Глава 15. Сборки .NET
    • 504 Определение специальных пространств имен
      • 506 Полностью квалифицированное имя типа
      • 507 Определение псевдонимов с помощью ключевого слова using
      • 508 Создание вложенных пространств имен
      • 509 Пространство имен, используемое в Visual Studio 2008 по умолчанию
    • 510 Роль сборок .NET
      • 510 Сборки повышают возможность повторного использования кода
      • 511 Сборки определяют границы типов
      • 511 Сборки являются единицами, поддерживающими версии
      • 511 Сборки являются самоописываемыми
      • 511 Сборки поддаются конфигурированию
    • 512 Формат сборки .NET
      • 512 Заголовок файла Win32
      • 513 Заголовок файла CLR
      • 513 CIL-код, метаданные типов и манифест сборки
      • 514 Необязательные ресурсы сборки
      • 514 Однофайловые и многофайловые сборки
    • 515 Создание и использование однофайловой сборки
      • 519 Изучение манифеста
      • 520 Исследование CIL-кода
      • 521 Исследование метаданных типов
      • 521 Создание клиентского приложения на C#
      • 523 Создание клиентского приложения на Visual Basic
      • 524 Межъязыковое наследование в действии
    • 524 Создание и использование многофайловой сборки
      • 526 Исследование файла ufo.netmodule
      • 526 Исследование файла airvehicles.dll
      • 526 Использование многофайловой сборки
    • 527 Приватные сборки
      • 528 Идентичность приватной сборки
      • 528 Процесс зондирования
      • 529 Конфигурирование приватных сборок
      • 531 Конфигурационные файлы и Visual Studio 2008
      • 531 Утилита .NET Framework Configuration
    • 533 Разделяемые сборки
      • 534 Строгие имена
      • 535 Назначение строгого имени сборке CarLibrary.dll
      • 537 Назначение строгих имен в Visual Studio 2008
      • 537 Установка и удаление разделяемых сборок из GAC
    • 538 Использование разделяемой сборки
      • 539 Изучение манифеста SharedCarLibClient
    • 540 Конфигурирование разделяемых сборок
      • 541 Фиксация текущей версии разделяемой сборки
      • 541 Создание разделяемой сборки версии 2.0.0.0
      • 543 Динамическое перенаправление к конкретным версиям разделяемой сборки
      • 544 Использование утилиты .NET Framework Configuration
    • 545 Изучение внутреннего устройства GAC
    • 546 Сборки политик издателя
      • 547 Отключение политик издателя
    • 548 Элемент <codeBase>
    • 549 Пространство имен System.Configuration
    • 550 Конфигурационный файл машины
    • 551 Резюме
  • 552 Глава 16. Рефлексия типов, позднее связывание и программирование с использованием атрибутов
    • 552 Необходимость в метаданных типов
      • 553 Просмотр части метаданных перечисления EngineState
      • 554 Просмотр части метаданных типа Car
      • 555 Изучение блока TypeRef
      • 555 Просмотр метаданных самой сборки
      • 556 Просмотр метаданных внешних сборок, на которые ссылается текущая сборка
      • 556 Просмотр метаданных строковых литералов
    • 557 Рефлексия
      • 557 Класс System.Type
      • 558 Получение информации о типе с помощью System.Object.GetType()
      • 559 Получение информации о типе с помощью System.Type.GetType()
      • 559 Получение информации о типе с помощью typeof()
    • 560 Создание специальной программы для просмотра метаданных
      • 560 Рефлексия методов
      • 560 Рефлексия полей и свойств
      • 561 Рефлексия реализуемых интерфейсов
      • 561 Отображение различных дополнительных деталей
      • 562 Реализация Main()
      • 563 Рефлексия обобщенных типов
      • 563 Рефлексия параметров и возвращаемых значений методов
    • 565 Динамически загружаемые сборки
    • 567 Рефлексия разделяемых сборок
    • 568 Позднее связывание
      • 569 Класс System.Activator
      • 570 Вызов методов без параметров
      • 570 Вызов методов с параметрами
    • 571 Программирование с использованием атрибутов
      • 572 Потребители атрибутов
      • 572 Применение предопределенных атрибутов в C#
      • 574 Указание параметров конструктора для атрибутов
      • 575 Атрибут [Obsolete] в действии
      • 575 Сокращенное обозначение атрибутов в C#
    • 576 Создание специальных атрибутов
      • 576 Применение специальных атрибутов
      • 577 Синтаксис именованных свойств
      • 577 Ограничение использования атрибутов
    • 578 Атрибуты уровня сборки (и уровня модуля)
      • 579 Файл AssemblyInfo.cs в Visual Studio 2008
    • 580 Рефлексия атрибутов с использованием раннего связывания
    • 581 Рефлексия атрибутов с использование позднего связывания
    • 582 Возможное применение рефлексии, позднего связывания и специальных атрибутов на практике
    • 583 Создание расширяемого приложения
      • 583 Создание CommonSnappableTypes.dll
      • 584 Создание оснастки на C#
      • 585 Создание подключаемого компонента в Visual Basic .NET
      • 585 Создание расширяемого приложения Windows Forms
    • 588 Резюме
  • 589 Глава 17. Процессы, домены приложений и контексты объектов
    • 589 Повторный обзор традиционных процессов Win32
      • 590 Общая информация о потоках
    • 592 Взаимодействие с процессами в рамках платформы .NET
      • 594 Перечисление выполняющихся процессов
      • 595 Изучение конкретного процесса
      • 595 Изучение ряда потоков внутри процесса
      • 597 Изучение модулей внутри процесса
      • 598 Запуск и остановка процессов программным образом
    • 599 Домены приложений .NET
      • 601 Перечисление доменов приложений процесса
      • 602 Создание новых доменов приложений программным образом
      • 604 Выгрузка доменов приложений программным образом
    • 605 Границы контекстов объектов
      • 605 Контекстно-свободные и контекстно-зависимые типы
      • 607 Определение контекстно-зависимых объектов
      • 607 Инспектирование контекста объекта
    • 609 Подведение итогов по процессам доменам приложений и контекстам
    • 609 Резюме
  • 610 Глава 18. Создание многопоточных приложений
    • 610 Отношение между процессами, доменами приложений, контекстами и потоками
      • 612 Проблемы параллелизма
      • 612 Роль синхронизации потоков
    • 613 Краткое описание делегатов .NET
    • 615 Асинхронная природа делегатов
      • 615 Методы BeginInvoke() и EndInvoke()
      • 616 Интерфейс System.IAsyncResult
    • 616 Вызов метода асинхронным образом
      • 617 Синхронизация вызывающего потока
      • 618 Роль делегата AsyncCallback
      • 620 Роль класса AsyncResult
      • 620 Передача и получение специальных данных о состоянии
    • 621 Пространство имен System.Threading
    • 622 Класс System.Threading.Thread
      • 623 Получение статистических данных о текущем потоке
      • 624 Свойство Name
      • 625 Свойство Priority
    • 625 Создание вторичных потоков программным образом
      • 626 Работа с делегатом ThreadStart
      • 628 Работа с делегатом ParameterizedThreadStart
      • 629 Приоритетные и фоновые потоки
    • 630 Проблемы, связанные с одновременным доступом
      • 632 Синхронизация с помощью ключевого слова lock в C#
      • 634 Синхронизация с помощью типа System.Threading.Monitor
      • 635 Синхронизация с помощью типа System.Threading.Interlocked
      • 636 Синхронизация с помощью атрибута [Synchronization]
    • 637 Программирование с использованием обратных вызовов таймеров
    • 639 Пул потоков CLR
    • 641 Роль компонента BackgroundWorker
      • 641 Работа с типом BackgroundWorker
      • 643 Обработка данных с помощью типа BackgroundWorker
    • 644 Резюме
  • 645 Глава 19. Язык CIL и роль динамических сборок
    • 645 Природа программирования в терминах CIL
    • 646 Директивы, атрибуты и коды операций в CIL
      • 647 Роль директив CIL
      • 647 Роль атрибутов CIL
      • 647 Роль кодов операций CIL
      • 647 Разница между кодами операций и их мнемоническими эквивалентами в CIL
    • 648 Помещение и извлечение данных из стека в CIL
    • 650 Двунаправленное проектирование
      • 653 Роль меток в коде CIL
      • 653 Взаимодействие с CIL: модификация файла *.il
      • 654 Компиляция CIL-кода с помощью ilasm.exe
      • 656 Компиляция CIL-кода с помощью SharpDevelop
      • 656 Роль peverify.exe
    • 657 Директивы и атрибуты CIL
      • 657 Добавление ссылок на внешние сборки в CIL
      • 658 Определение текущей сборки в CIL
      • 659 Определение пространств имен в CIL
      • 659 Определение типов классов в CIL
      • 660 Определение и реализация интерфейсов
      • 661 Определение структур в CIL
      • 661 Определение перечислений
      • 662 Определение обобщений в CIL
      • 662 Компиляция файла CILTypes.il
    • 663 Соответствия между типами данных в библиотеке базовых классов .NET, C# и CIL
    • 664 Определение членов типов в CIL
      • 664 Определение полей данных
      • 665 Определение конструкторов для типов в CIL
      • 665 Определение свойств
      • 666 Определение параметров членов
    • 667 Изучение кодов операций в CIL
      • 669 Директива .maxstack
      • 670 Объявление локальных переменных в CIL
      • 671 Отображение параметров на локальные переменные в CIL
      • 671 Скрытая ссылка this
      • 672 Представление итерационных конструкций в CIL
    • 672 Создание сборки .NET на CIL
      • 673 Создание CILCars.dll
      • 675 Создание CILCarClient.exe
    • 677 Динамические сборки
      • 678 Пространство имен System.Reflection.Emit
      • 678 Роль System.Reflection.Emit.ILGenerator
      • 679 Создание динамической сборки
      • 681 Генерация сборки и набора модулей
      • 682 Роль типа ModuleBuilder
      • 683 Генерация типа HelloClass и принадлежащей ему строковой переменной
      • 684 Генерация конструкторов
      • 685 Генерация метода SayHello()
      • 685 Использование динамически сгенерированной сборки
    • 686 Резюме
  • 687 ЧАСТЬ V. Введение в библиотеки базовых классов .NET
  • 688 Глава 20. Файловый ввод-вывод и изолированное хранилище
    • 688 Исследование пространства имен System.IO
    • 689 Типы Directory (DirectoryInfo) и File (FileInfo)
      • 690 Абстрактный базовый класс FileSystemInfo
    • 691 Работа с типом DirectoryInfo
      • 692 Перечисление файлов с помощью типа DirectoryInfo
      • 693 Создание подкаталогов с помощью типа DirectoryInfo
    • 694 Работа с типом Directory
    • 695 Работа с типом DriveInfo
    • 696 Работа с классом FileInfo
      • 697 Метод FileInfo.Create()
      • 697 Метод FileInfo.Open()
      • 698 Методы FileOpen.OpenRead() и FileInfo.OpenWrite()
      • 699 Метод FileInfo.OpenText()
      • 699 Методы FileInfo.CreateText() и FileInfo.AppendText()
    • 700 Работа с типом File
      • 700 Дополнительные члены File
    • 701 Абстрактный класс Stream
      • 703 Работа с классом FileStream
    • 704 Работа с StreamWriter и StreamReader
      • 705 Запись в текстовый файл
      • 706 Чтение из текстового файла
      • 707 Прямое создание экземпляров типов StreamWriter/StreamReader
    • 707 Работа с типами StreamWriter и StreamReader
    • 708 Работа с BinaryWriter и BinaryReader
    • 710 Программное «слежение» за файлами
    • 712 Выполнение асинхронного файлового ввода-вывода
    • 713 Роль изолированного хранилища
      • 713 Вопрос доверия
      • 714 Другие применения программного интерфейса изолированного хранилища
    • 715 Пример использования Code Access Security
      • 716 Роль признаков
      • 718 Роль групп кода
      • 721 Роль наборов привилегий
      • 723 Наблюдение CAS в действии
    • 724 Обзор изолированного хранилища
      • 725 Область изолированного хранилища
      • 726 Нахождение изолированного хранилища
      • 727 Взаимодействие с изолированным хранилищем с помощью storeadm.exe
      • 728 Типы System.IO.IsolatedStorage
    • 729 Получение хранилища посредством IsolatedStorageFile
      • 730 Запись данных в хранилище
      • 731 Чтение данных из хранилища
      • 731 Удаление пользовательских данных из хранилища
      • 732 Создание специальной структуры каталогов
    • 733 Изолированное хранилище в действии: развертывание ClickOnce
      • 733 Атрибут IsolatedStorageFilePermission
      • 734 Ограничение зоны безопасности
      • 734 Публикация приложения на веб-сервере
      • 735 Просмотр результатов
    • 736 Резюме
  • 737 Глава 21. Введение в сериализацию объектов
    • 737 Понятие сериализации объектов
      • 739 Роль графов объектов
    • 740 Конфигурирование объектов для сериализации
      • 740 Определение сериализуемых типов
      • 741 Общедоступные поля, приватные поля и общедоступные свойства
    • 742 Выбор форматера сериализации
      • 742 Интерфейсы IFormatter и IRemotingFormatter
      • 743 Точность типов среди форматеров
    • 744 Сериализация объектов с использованием BinaryFormatter
      • 745 Десериализация объектов с использованием BinaryFormatter
    • 746 Сериализация объектов с использованием SoapFormatter
    • 747 Сериализация объектов с использованием XmlSerializer
      • 748 Контроль сгенерированных данных XML
    • 749 Сериализация коллекций объектов
    • 750 Настройка процесса сериализации
      • 751 Углубленный взгляд на сериализацию объектов
      • 752 Настройка сериализации с использованием ISerializable
      • 754 Настройка сериализации с использованием атрибутов
    • 755 Резюме
  • 756 Глава 22. ADO.NET, часть I: подключенный уровень
    • 756 Высокоуровневое определение ADO.NET
      • 758 Две стороны ADO.NET
    • 758 Поставщики данных ADO.NET
      • 759 Поставщики данных ADO.NET от Microsoft
      • 761 Получение сторонних поставщиков данных ADO.NET
    • 761 Дополнительные пространства имен ADO.NET
    • 762 Типы из пространства имен System.Data
      • 763 Роль интерфейса IDbConnection
      • 764 Роль интерфейса IDbTransaction
      • 764 Роль интерфейса IDbCommand
      • 764 Роль интерфейсов IDbDataParameter и IDataParameter
      • 765 Роль интерфейсов IDbDataAdapter и IDataAdapter
      • 765 Роль интерфейсов IDataReader и IDataRecord
    • 766 Абстрагирование поставщиков данных с помощью интерфейсов
      • 768 Повышение гибкости с помощью конфигурационных файлов приложения
    • 769 Создание базы данных AutoLot
      • 770 Создание таблицы Inventory
      • 772 Создание хранимой процедуры GetPetName()
      • 772 Создание таблиц Customers и Orders
      • 774 Визуальное создание отношений между таблицами
    • 775 Модель фабрики поставщиков данных ADO.NET
      • 776 Зарегистрированные фабрики поставщиков данных
      • 776 Полный пример фабрики поставщиков данных
      • 779 Возможные трудности с моделью фабрики поставщиков
      • 779 Элемент <connectionStrings>
    • 780 Подключенный уровень ADO.NET
      • 781 Работа с объектами подключения
      • 783 Работа с объектами ConnectionStringBuilder
      • 784 Работа с объектами команд
    • 785 Работа с объектами чтения данных
      • 787 Получение множественных результатов с помощью объекта чтения данных
    • 788 Создание повторно используемой библиотеки доступа к данным
      • 789 Добавление логики подключения
      • 789 Добавление логики вставки
      • 790 Добавление логики удаления
      • 790 Добавление логики изменения
      • 791 Добавление логики выборки
      • 792 Работа с параметризованными объектами команд
      • 794 Выполнение хранимой процедуры
    • 795 Создание консольного пользовательского интерфейса
      • 795 Реализация метода Main()
      • 797 Реализация метода ShowInstructions()
      • 797 Реализация метода ListInventory()
      • 798 Реализация метода DeleteCar()
      • 798 Реализация метода InsertNewCar()
      • 798 Реализация метода UpdateCarPetName()
      • 799 Реализация метода LookUpPetName()
    • 800 Асинхронный доступ к данным с помощью SqlCommand
    • 801 Транзакции баз данных
      • 802 Основные члены объекта транзакции ADO.NET
      • 803 Добавление метода транзакции в InventoryDAL
      • 804 Тестирование транзакции в нашей базе данных
    • 805 Резюме
  • 806 Глава 23. ADO.NET, часть II: автономный уровень
    • 806 Знакомство с автономным уровнем ADO.NET
    • 807 Роль объектов DataSet
      • 808 Основные свойства класса DataSet
      • 809 Основные методы класса DataSet
      • 809 Создание DataSet
    • 810 Работа с объектами DataColumn
      • 811 Создание объекта DataColumn
      • 812 Включение автоинкрементных полей
      • 812 Добавление объектов DataColumn в DataTable
    • 813 Работа с объектами DataRow
      • 814 Свойство RowState
      • 815 Свойство DataRowVersion
    • 816 Работа с объектами DataTable
      • 817 Вставка объектов DataTable в DataSet
      • 818 Обработка данных из DataTable с помощью объектов DataTableReader
      • 819 Сериализация объектов DataTable и DataSet в формате XML
      • 820 Сериализация объектов DataTable и DataSet в двоичном формате
    • 821 Привязка объектов DataTable к пользовательским интерфейсам
      • 822 Заполнение DataTable из обобщенного List<T>
      • 824 Программное удаление строк
      • 825 Выборка строк с помощью фильтра
      • 828 Изменение строк
      • 829 Работа с типом DataView
      • 830 Последнее усовершенствование интерфейса: вывод номеров строк
    • 831 Заполнение объектов DataSet и DataTable с помощью адаптеров данных
      • 832 Простой пример адаптера данных
      • 833 Замена имен из базы данных более понятными названиями
    • 834 Пересмотр AutoLotDAL.dll
      • 834 Определение начального класса
      • 834 Настройка адаптера данных с помощью SqlCommandBuilder
      • 836 Реализация метода GetAllInventory()
      • 836 Реализация метода UpdateInventory()
      • 836 Создание клиентского интерфейса на основе Windows Forms
    • 837 Навигация по объектам DataSet для нескольких таблиц
      • 838 Подготовка адаптеров данных
      • 839 Создание отношений между таблицами
      • 840 Изменение таблиц базы данных
      • 840 Переходы между взаимосвязанными таблицами
    • 842 Средства доступа к данным в Visual Studio 2008
      • 843 Визуальное проектирование элементов DataGridView
      • 846 Файлы App.config и Settings.Settings
      • 847 Анализ сгенерированного DataSet
      • 848 Анализ сгенерированных объектов DataTable и DataRow
      • 850 Анализ сгенерированного адаптера данных
      • 850 Использование сгенерированных типов в коде
    • 852 Отделение сгенерированного кода от уровня пользовательского интерфейса
      • 854 Клиентская часть пользовательского интерфейса: MultitabledDataSetApp (Redux)
    • 855 Резюме
  • 856 Глава 24. Программирование с использованием API-интерфейсов LINQ
    • 856 Роль LINQ to ADO.NET
    • 857 Программирование с помощью LINQ to DataSet
      • 858 Роль расширений DataSet
      • 859 Получение DataTable, совместимого с LINQ
      • 860 Роль метода расширения DataRowExtensions.Field<T>()
      • 861 Заполнение новых DataTable из LINQ-запросов
    • 862 Программирование с помощью LINQ to SQL
      • 862 Роль классов сущностей
      • 863 Роль типа DataContext
      • 863 Простой пример применения LINQ to SQL
      • 865 Создание строго типизированного DataContext
      • 866 Более подробно об атрибутах [Table] и [Column]
    • 867 Генерация классов сущностей с помощью SqlMetal.exe
      • 868 Анализ сгенерированных классов сущностей
      • 870 Определение отношений с помощью классов сущностей
      • 870 Строго типизированный DataContext
      • 871 Программирование или сгенерированные типы
    • 872 Создание классов сущностей с помощью Visual Studio 2008
      • 874 Вставка новых элементов
      • 875 Изменение существующих элементов
      • 875 Удаление существующих элементов
    • 876 Работа с XML-документами с помощью LINQ to XML
      • 876 LINQ to XML в качестве лучшего DOM
      • 876 Пространство имен System.Xml.XLinq
      • 877 Программное создание XML-документов
      • 879 Генерация документов из LINQ-запросов
      • 879 Загрузка и просмотр XML-содержимого
    • 880 Навигация по документу, находящемуся в памяти
      • 881 Изменение данных в XML-документе
    • 882 Резюме
  • 883 Глава 25. Введение в Windows Communication Foundation
    • 883 Программные интерфейсы распределенных вычислений
      • 884 Роль DCOM
      • 885 Роль служб COM+/Enterprise Services
      • 886 Роль MSMQ
      • 886 Роль .NET Remoting
      • 887 Роль веб-служб XML
      • 890 Именованные каналы, сокеты и P2P
    • 890 Роль WCF
      • 891 Обзор средств WCF
      • 891 Обзор сервис-ориентированной архитектуры
      • 892 WCF: итоги
    • 893 Исследование основных сборок WCF
    • 894 Шаблоны проектов WCF в Visual Studio
      • 895 Шаблон проекта WCF Service Website
    • 896 Базовая композиция приложения WCF
    • 897 Понятие ABC WCF
      • 897 Понятие контрактов WCF
      • 898 Понятие привязок WCF
      • 901 Понятие адресов WCF
    • 902 Построение службы WCF
      • 904 Атрибут [ServiceContract]
      • 905 Атрибут [OperationContract]
      • 905 Служебные типы как контракты операций
    • 906 Хостинг службы WCF
      • 906 Установка ABC внутри файла App.config
      • 907 Кодирование с использованием типа ServiceHost
      • 908 Опции кодирования хоста
      • 909 Подробный анализ типа ServiceHost
      • 911 Подробный анализ элемента <system.serviceModel>
      • 912 Включение обмена метаданными
    • 914 Построение клиентского приложения WCF
      • 914 Генерация кода прокси с использованием svcutil.exe
      • 915 Генерация кода прокси с использованием Visual Studio 2008
      • 916 Конфигурирование привязки на базе TCP
    • 918 Использование шаблона проекта WCF Service Library
      • 918 Построение простой математической службы
      • 919 Тестирование службы WCF с помощью WcfTestClient.exe
      • 919 Изменение конфигурационных файлов с помощью SvcConfigEditor.exe
    • 921 Хостинг службы WCF в виде службы Windows
      • 921 Спецификация ABC в коде
      • 922 Включение MEX
      • 923 Создание инсталлятора службы Windows
      • 924 Инсталляция службы Windows
    • 924 Асинхронный вызов службы
    • 926 Проектирование контрактов данных WCF
      • 927 Использование веб-ориентированного шаблона проекта WCF Service
      • 929 Реализация контракта службы
      • 930 Роль файла *.svc
      • 930 Обновление файла Web.config
      • 930 Тестирование службы
    • 931 Резюме
  • 932 Глава 26. Введение в Windows Workflow Foundation
    • 932 Определение бизнес-процесса
      • 933 Роль WF
    • 933 Строительные блоки WF
      • 934 Исполняющая система WF
      • 935 Службы ядра WF
      • 936 Первый взгляд на действия WF
      • 937 Последовательные потоки и конечные автоматы
    • 939 Сборки, пространства имен и проекты WF
      • 940 Поддержка .NET 3.5 WF
      • 940 Шаблоны проектов рабочих процессов Visual Studio
      • 941 Проектирование рабочего потока
    • 942 Построение простого приложения рабочего потока
      • 942 Исследование начального кода рабочего потока
      • 943 Добавление действия Code
      • 944 Добавление действия While
    • 946 Исследование кода хостинга механизма WF
      • 947 Добавление специальных параметров запуска
    • 949 Вызов веб-служб внутри рабочих потоков
      • 949 Создание MathWebService
      • 951 Построение WF-клиента веб-службы
      • 952 Конфигурирование действия IfElse
      • 954 Конфигурирование действий InvokeWebService
      • 956 Взаимодействие со службами WCF с использованием типа SendActivity
    • 960 Построение многократно используемой библиотеки кода WF
      • 961 Выполнение проверки кредитоспособности
      • 964 Создание клиентского приложения Windows Forms
    • 966 Несколько слов о специальных действиях
    • 966 Резюме
  • 968 ЧАСТЬ VI. Настольные пользовательские интерфейсы
  • 969 Глава 27. Программирование с использованием Windows Forms
    • 970 Пространства имен Windows Forms
    • 971 Построение простого приложения Windows Forms (без IDE-среды)
      • 972 Наполнение коллекции элементов управления
      • 974 Роль System.EventArgs и System.EventHandler
    • 975 Шаблон проекта Windows Forms Application в Visual Studio
      • 975 Поверхность визуального дизайнера
      • 977 Внутренняя структура начальной формы
      • 979 Внутренняя структура класса Program
      • 979 Визуальное построение системы меню
    • 982 Внутренняя структура формы
      • 983 Функциональность класса Control
      • 985 Функциональность класса Form
      • 987 Жизненный цикл типа Form
    • 989 Реагирование на действия мыши
      • 990 Определение кнопки мыши, которой выполнен щелчок
    • 991 Реагирование на действия клавиатуры
    • 992 Проектирование диалоговых окон
      • 994 Свойство DialogResult
      • 994 Конфигурирование порядка табуляции
      • 995 Мастер Tab Order Wizard
      • 995 Установка в форме кнопки ввода по умолчанию
      • 996 Отображение диалоговых окон
      • 997 Понятие наследования форм
    • 999 Визуализация графических данных с использованием GDI+
      • 1000 Пространство имен System.Drawing
      • 1001 Роль типа Graphics
      • 1002 Получение объекта Graphics через событие Paint
      • 1003 Объявление клиентской области формы недействительной
    • 1004 Построение полноценного приложения Windows Forms
      • 1004 Построение системы главного меню
      • 1005 Определение типа ShapeData
      • 1006 Определение типа ShapePickerDialog
      • 1007 Добавление инфраструктуры к типу MainWindow
      • 1007 Реализация функциональности меню Tools
      • 1008 Захват и визуализация графического вывода
      • 1010 Реализация логики сериализации
    • 1011 Резюме
  • 1012 Глава 28. Введение в Windows Presentation Foundation и XAML
    • 1012 Мотивация, лежащая в основе WPF
      • 1013 Унификация различных API-интерфейсов
      • 1014 Обеспечение отделения функциональности через XAML
      • 1014 Обеспечение оптимизированной модели визуализации
      • 1015 Дополнительные средства WPF
    • 1015 Различные варианты приложений WPF
      • 1015 Традиционные настольные приложения
      • 1016 WPF-приложения на основе навигации
      • 1016 Приложения XBAP
      • 1018 Приложения Silverlight
    • 1018 Исследование сборок WPF
      • 1019 Роль класса Application
      • 1020 Роль класса Window
      • 1021 Роль класса System.Windows.Controls.ContentControl
      • 1022 Роль класса System.Windows.Controls.Control
      • 1023 Роль класса System.Windows.FrameworkElement
      • 1023 Роль класса System.Windows.UIElement
      • 1024 Роль класса System.Windows.Media.Visual
      • 1024 Роль класса System.Windows.DependencyObject
      • 1025 Роль класса System.Windows.Threading.DispatcherObject
    • 1025 Построение (свободного от XAML) приложения WPF
      • 1027 Расширение типа класса Window
      • 1027 Создание простого пользовательского интерфейса
    • 1029 Дополнительные детали типа Application
      • 1029 Данные приложения и обработка аргументов командной строки
      • 1030 Итерация по коллекции Windows в Application
      • 1030 Дополнительные события типа Application
    • 1031 Дополнительные детали типа Window
      • 1031 Жизненный цикл объекта Window
      • 1032 Обработка закрытия объекта Window
      • 1033 Обработка событий мыши на уровне окна
      • 1034 Обработка клавиатурных событий на уровне окна
    • 1035 Построение (основанного на XAML) приложения WPF
      • 1035 Определение MainWindow на XAML
      • 1036 Определение объекта Application на XAML
      • 1037 Обработка файлов XAML с помощью msbuild.exe
    • 1038 Трансформация разметки в сборку .NET
      • 1039 Отображение XAML на код C#
      • 1040 Роль BAML
      • 1042 Итоговые замечания о процессе превращения XAML в сборку
    • 1042 Разделение ответственности с использованием файлов отделенного кода
    • 1044 Синтаксис XAML
      • 1044 Эксперименты с XAML с применением xamlpad.exe
      • 1046 Пространства имен и ключевые слова XAML
      • 1048 Элементы и атрибуты XAML
      • 1049 Понятие синтаксиса XAML «свойство-элемент»
      • 1051 Понятие присоединяемых свойств XAML
      • 1052 Понятие о конвертерах типов XAML
      • 1053 Понятие расширений разметки XAML
      • 1055 Предварительные сведения о ресурсах и привязке данных
    • 1057 Построение приложений WPF с использованием Visual Studio 2008
      • 1058 Шаблоны проектов WPF
      • 1058 Изменение имени начального окна
      • 1059 Визуальный дизайнер WPF
    • 1061 Обработка XAML во время выполнения: SimpleXamlPad.exe
      • 1063 Реализация события Loaded
      • 1063 Реализация события Click объекта Button
      • 1064 Реализация события Closed
      • 1064 Тестирование приложения
    • 1065 Роль Microsoft Expression Blend
      • 1065 Преимущества Expression Blend
    • 1066 Резюме
  • 1067 Глава 29. Программирование с использованием элементов управления WPF
    • 1067 Обзор библиотеки элементов управления WPF
      • 1069 Элементы управления WPF и Visual Studio 2008
      • 1069 Подробности ищите в документации
    • 1070 Объявление элементов управления на XAML
      • 1071 Взаимодействие с элементами управления в файлах кода
    • 1072 Роль зависимых свойств
      • 1073 Исследование существующих зависимых свойств
      • 1074 Регистрация свойства зависимости
      • 1075 Определение свойства-оболочки для поля DependencyProperty
    • 1076 Понятие маршрутизируемых событий
      • 1078 Роль пузырьковых маршрутизируемых событий
      • 1078 Продолжение или прекращения пузырькового распространения
      • 1079 Роль туннельных маршрутизируемых событий
    • 1080 Работа с типами Button
      • 1081 Тип ButtonBase
      • 1081 Тип Button
      • 1082 Тип ToggleButton
      • 1083 Тип RepeatButton
    • 1084 Работа с элементами CheckBox и RadioButton
      • 1085 Установка логического группирования
      • 1085 Заключение связанных элементов в рамку GroupBox
      • 1086 Заключение связанных элементов в Expander
    • 1087 Работа с типами ListBox и ComboBox
      • 1088 Программное заполнение списковых элементов управления
      • 1089 Добавление произвольного содержимого
      • 1090 Определение текущего выбора
      • 1091 Определение текущего выбора для вложенного содержимого
    • 1092 Работа с текстовыми областями
      • 1092 Работа с типом TextBox
      • 1093 Работа с типом PasswordBox
    • 1095 Управление компоновкой содержимого с использованием панелей
      • 1096 Основные типы панелей WPF
      • 1097 Позиционирование содержимого внутри панелей Canvas
      • 1098 Позиционирование содержимого внутри панелей WrapPanel
      • 1100 Позиционирование содержимого внутри панелей StackPanel
      • 1101 Позиционирование содержимого внутри панелей Grid
      • 1103 Позиционирование содержимого внутри панелей DockPanel
      • 1104 Включение прокрутки в типах панелей
    • 1105 Построение главного окна с использованием вложенных панелей
      • 1106 Построение системы меню
      • 1107 Построение типа ToolBar
      • 1107 Построение типа StatusBar
      • 1108 Завершение дизайна пользовательского интерфейса
      • 1109 Завершение реализации
    • 1110 Понятие управляющих команд WPF
      • 1110 Внутренние объекты управляющих команд
      • 1111 Подключение команд к свойству Command
      • 1112 Подключение команд к произвольным элементам пользовательского интерфейса
    • 1113 Понятие модели привязки данных WPF
      • 1114 Первый взгляд на привязку данных
      • 1115 Свойство DataContext
      • 1116 Свойство Mode
    • 1116 Преобразование данных с использованием IValueConverter
      • 1118 Преобразование между различными типами данных
    • 1119 Привязка к специальным объектам
      • 1121 Работа с типом ObservableCollection<T>
      • 1122 Создание специального шаблона данных
    • 1123 Привязка элементов пользовательского интерфейса к документам XML
      • 1123 Построение специального диалогового окна
      • 1125 Присваивание значения DialogResult
      • 1125 Получение текущего выбора
      • 1126 Отображение специального диалогового окна
    • 1127 Резюме
  • 1128 Глава 30. Визуализация двухмерной графики, ресурсы и темы WPF
    • 1128 Философия служб визуализации графики WPF
      • 1129 Варианты визуализации графики WPF
      • 1135 Выбор подхода
    • 1136 Исследование типов, производных от Shape
      • 1136 Функциональность базового класса Shape
    • 1138 Работа с кистями WPF
      • 1139 Построение кистей сплошного цвета
      • 1139 Работа с градиентными кистями
      • 1140 Тип ImageBrush
    • 1141 Работа с перьями WPF
    • 1142 Исследование типов-наследников Drawing
      • 1142 Роль геометрических типов
      • 1143 Анализ простой геометрии рисования
      • 1144 Включение типов Drawing в DrawingImage
      • 1144 Включение типов Drawing в DrawingBrush
      • 1144 Более сложная геометрия для рисования
    • 1146 Роль трансформаций пользовательского интерфейса
      • 1146 Типы-наследники Transform
      • 1147 Применение трансформаций
    • 1148 Понятие служб анимации WPF
      • 1149 Роль типов с суффиксом Animation
      • 1150 Роль базового класса Timeline
      • 1150 Написание анимации в коде C#
      • 1151 Управление скоростью анимации
      • 1152 Обращение и зацикливание анимации
      • 1153 Описание анимации в XAML
      • 1154 Роль ключевых кадров анимации
    • 1157 Понятие системы ресурсов WPF
      • 1157 Работа с двоичными ресурсами
      • 1159 Роль объектных (логических) ресурсов
    • 1159 Определение и применение стилей элементов управления WPF
      • 1159 Работа с встроенными стилями
      • 1161 Работа с именованными стилями
      • 1162 Переопределение настроек стиля
      • 1162 Наследование от существующих стилей
      • 1163 Расширение стилей
      • 1164 Сужение стилей
      • 1164 Неявное назначение стилей
      • 1164 Определение стилей с триггерами
      • 1166 Программное назначение стилей
    • 1168 Изменение элементов управления пользовательского интерфейса с помощью шаблонов
      • 1168 Построение специального шаблона
      • 1169 Добавление триггеров к шаблонам
      • 1170 Встраивание шаблонов в стили
    • 1172 Резюме
  • 1173 ЧАСТЬ VII. Построение веб-приложений с использованием ASP.NET
  • 1174 Глава 31. Построение веб-страниц ASP.NET
    • 1174 Роль HTTP
      • 1174 Цикл запрос/ответ HTTP
      • 1175 HTTP — протокол без поддержки состояния
    • 1175 Понятие веб-приложений и веб-серверов
      • 1177 Роль виртуальных каталогов IIS
      • 1178 Сервер разработки ASP.NET
    • 1179 Роль HTML
      • 1179 Структура документа HTML
      • 1180 Разработка форм HTML
      • 1181 Построение пользовательского интерфейса на базе HTML
    • 1183 Роль сценариев клиентской стороны
      • 1185 Пример сценария клиентской стороны
      • 1185 Проверка достоверности данных формы default.htm
    • 1186 Отправка данных формы (GET и POST)
    • 1186 Построение классической страницы ASP
    • 1188 Проблемы классического ASP
    • 1189 Основные преимущества ASP.NET 1.x
      • 1189 Основные усовершенствования ASP.NET
      • 1190 Основные веб-расширения .NET 3.5
    • 1190 Пространства имен ASP.NET
    • 1191 Модель кода веб-страницы ASP.NET
      • 1192 Построение ориентированной на данные однофайловой тестовой страницы
      • 1197 Работа с моделью страницы с отделенным кодом
    • 1201 Подробности структуры каталога веб-сайта ASP.NET
      • 1201 Ссылаемые сборки
      • 1202 Роль папки App _ Code
    • 1203 Цикл компиляции страницы ASP.NET
      • 1203 Цикл компиляции для однофайловых страниц
      • 1203 Цикл компиляции многофайловых страниц
    • 1205 Цепочка наследования типа Page
    • 1206 Взаимодействие с входящим запросом HTTP
      • 1207 Получение статистики браузера
      • 1208 Доступ к входным данным формы
      • 1209 Свойство IsPostBack
    • 1209 Взаимодействие с исходящим ответом HTTP
      • 1210 Выдача HTML-содержимого
      • 1211 Перенаправление пользователей
    • 1211 Жизненный цикл веб-страницы ASP.NET
      • 1213 Роль атрибута AutoEventWireup
      • 1213 Событие Error
    • 1214 Роль файла Web.config
      • 1216 Утилита администрирования веб-сайтов ASP.NET
    • 1217 Резюме
  • 1218 Глава 32. Веб-элементы управления, темы и мастер-страницы ASP.NET
    • 1218 Природа веб-элементов управления
      • 1219 Обработка событий серверной стороны
      • 1220 Свойство AutoPostBack
    • 1221 Тип System.Web.UI.Control
      • 1221 Перечисление содержащихся элементов управление
      • 1223 Динамическое добавление и удаление элементов управления
    • 1224 Тип System.Web.UI.WebControls.WebControl
    • 1224 Основные категории веб-элементов управления ASP.NET
      • 1225 Краткая информация о System.Web.UI.HtmlControls
    • 1226 Построение веб-сайта ASP.NET с развитыми средствами
      • 1226 Работа с мастер-страницами
      • 1233 Определение страницы содержимого Default.aspx
      • 1235 Проектирование страницы содержимого Inventory.aspx
      • 1238 Проектирование страницы содержимого BuildCar.aspx
    • 1241 Роль элементов управления проверкой достоверности
      • 1242 Тип RequiredFieldValidator
      • 1243 Тип RegularExpressionValidator
      • 1244 Тип RangeValidator
      • 1244 Тип CompareValidator
      • 1245 Создание элемента ValidationSummary
      • 1246 Определение групп проверки достоверности
    • 1247 Работа с темами
      • 1248 Понятие файлов *.sk in
      • 1250 Применение тем ко всему сайту
      • 1251 Применение тем на уровне страницы
      • 1251 Свойство SkinID
      • 1252 Программное назначение тем
    • 1253 Позиционирование элементов управления с использованием таблиц HTML
    • 1255 Резюме
  • 1256 Глава 33. Управление состоянием в ASP.NET
    • 1256 Проблема поддержки состояния
    • 1258 Приемы управления состоянием ASP.NET
    • 1259 Роль состояния представления ASP.NET
      • 1259 Демонстрация работы с состоянием представления
      • 1261 Добавление специальных данных в состояние представления
    • 1262 Роль файла Global.asax
      • 1264 Глобальный обработчик исключений «последнего шанса»
      • 1264 Базовый класс HttpApplication
    • 1265 Различие между Application и Session
      • 1266 Поддержка данных состояния уровня приложения
      • 1268 Модификация данных приложения
      • 1270 Обработка останова веб-приложения
    • 1270 Работа с кэшем приложения
      • 1271 Работа с кэшированием данных
      • 1273 Модификация файла *.aspx
    • 1274 Поддержка данных сеанса
      • 1277 Дополнительные члены HttpSessionState
    • 1278 Понятие cookie-наборов
      • 1278 Создание cookie-наборов
      • 1279 Чтение входящих cookie-данных
    • 1280 Роль элемента <sessionState>
      • 1281 Хранение данных сеанса на сервере состояния сеансов ASP.NET
      • 1282 Хранение информации о сеансах в выделенной базе данных
    • 1282 Интерфейс ASP.NET Profile API
      • 1283 База данных ASPNETDB.mdf
      • 1284 Определение пользовательского профиля в web.config
      • 1285 Программный доступ к данным профиля
      • 1288 Группирование данных профиля и сохранение специальных объектов
    • 1290 Резюме
  • 1291 ЧАСТЬ VIII. Приложения
  • 1292 Приложение А. Возможность взаимодействия COM и .NET
    • 1292 Контекст взаимодействия .NET
    • 1293 Простой пример взаимодействия .NET c COM
      • 1294 Построение клиента C#
    • 1296 Исследование сборки взаимодействия .NET
    • 1298 Понятие Runtime Callable Wrapper
      • 1298 RCW: представление типов COM как типов .NET
      • 1299 RCW: управление счетчиком ссылок на совместный класс
      • 1300 RCW: сокрытие низкоуровневых COM-интерфейсов
    • 1300 Роль COM IDL
      • 1302 Обзор сгенерированного IDL для сервера VB COM
      • 1303 Атрибуты IDL
      • 1303 Оператор библиотеки IDL
      • 1303 Роль интерфейса [default]
      • 1304 Роль IDispatch
      • 1304 Атрибуты параметров IDL
    • 1304 Использование библиотеки типов для построения сборки взаимодействия
      • 1305 Позднее связывание с совместным классом CoCalc
    • 1307 Построение более сложного сервера COM
      • 1307 Поддержка дополнительного COM-интерфейса
      • 1308 Представление внутреннего объекта
    • 1309 Исследование сборки взаимодействия
      • 1309 Построение клиентского приложения C#
      • 1310 Взаимодействие с типом CoCar
      • 1311 Перехват событий COM
    • 1313 Понятие взаимодействия COM с .NET
      • 1313 Атрибуты System.Runtime.InteropServices
    • 1314 Роль CCW
    • 1315 Роль интерфейса класса .NET
      • 1315 Определение интерфейса класса
    • 1316 Построение типов .NET
      • 1317 Определение строгого имени
    • 1318 Генерация библиотеки типов и регистрация типов .NET
    • 1319 Исследование информации экспортированного типа
    • 1319 Построение тестового клиента Visual Basic 6.0
    • 1320 Резюме
  • 1321 Приложение Б. Независимая от платформы разработка .NET с помощью Mono
    • 1321 Независимая от платформы природа .NET
      • 1322 Роль CLI
      • 1323 Основные дистрибутивы CLI
      • 1324 Область действия Mono
    • 1324 Получение и инсталляция Mono
      • 1325 Исследование структуры каталогов Mono
    • 1326 Инструменты разработки Mono
      • 1327 Работа с компиляторами C#
      • 1327 Инструменты разработки Mono, совместимые с Microsoft
      • 1328 Специфичные для Mono инструменты разработки
    • 1329 Построение приложений .NET с использованием Mono
      • 1329 Построение библиотеки кода Mono
      • 1332 Построение консольного приложения в Mono
      • 1333 Построение клиентской программы Windows Forms
      • 1335 Выполнение приложения Windows Forms под Linux
    • 1335 Советы по дальнейшему изучению
    • 1336 Резюме
  • 1337 Предметный указатель

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

Поиск книг:




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

Статистика: