Język C# 6.0 i platforma .NET 4.6

1 ocena

Format:

mobi, epub, ibuk

DODAJ DO ABONAMENTU

WYBIERZ RODZAJ DOSTĘPU

111,30  159,00

Format: epub, mobi

 

Dostęp online przez myIBUK

WYBIERZ DŁUGOŚĆ DOSTĘPU

6,15

Wypożycz na 24h i opłać sms-em

111,30159,00

cena zawiera podatek VAT

ZAPŁAĆ SMS-EM

Materiał do nowego, siódmego wydania książki, został całkowicie poprawiony i napisany tak, aby uwzględnić ostatnie zmiany w specyfikacji języka C#, a także nowości na platformie .NET.
W książce tej znajdziesz omówienie wszystkich nowych funkcji, które sprawiają, że .NET 4.6 jest obecnie wersją najbardziej kompletną.


Celem książki jest udostępnienie czytelnikowi kompleksowego, dogłębnego omówienia podstaw języka programowania C# oraz kluczowych aspektów platformy .NET, jak również przeglądu technologii opartych na C# i .NET (ADO.NET i Entity Framework, WCF [Windows Communication Foundation], WPF [Windows Presentation Foundation] i ASP.NET [WebForms, MVC, WebAPI]).


Liczba stron1412
WydawcaWydawnictwo Naukowe PWN
ISBN-13978-83-01-19832-9
Numer wydania1
Język publikacjipolski
Informacja o sprzedawcyRavelo Sp. z o.o.

TA KSIĄŻKA JEST W ABONAMENCIE

Już od 19,90 zł miesięcznie za 5 ebooków!

WYBIERZ SWÓJ ABONAMENT

Ciekawe propozycje

Spis treści

[]Część I Wprowadzenie do C# i platformy .NET    1
  Rozdział 1 Filozofia .NET    3
  Pierwsze spojrzenie na platformę .NET    3
    Wybór kluczowych zalet platformy .NET    4
    Wprowadzenie do części składowych platformy .NET (CLR, CTS i CLS)    4
    Rola bibliotek klas bazowych    5
    Co nowego wnosi C#?    5
  Kod zarządzany a kod niezarządzany    7
  Dodatkowe języki programowania na platformie .NET    8
    Życie w świecie wielojęzycznym    8
  Przegląd pakietów .NET    9
    Rola języka CIL    10
    Zalety CIL    12
    Kompilowanie CIL do instrukcji na konkretną platformę    12
    Rola metadanych typów .NET    12
    Rola manifestu pakietu    13
  Wspólny system typów (CTS)    14
    Klasy CTS    14
    Interfejsy CTS    15
    Struktury CTS    15
    Wyliczenia CTS    15
    Delegaty CTS    16
    Składowe typów CTS    16
    Wbudowane typy danych CTS    16
  Specyfikacja wspólnego języka (CLS)    17
    Zapewnianie zgodności z CLS    19
  Wspólne środowisko uruchomieniowe (CLR)    19
  Różnica między pakietem, przestrzenią nazw i typem    20
    Rola głównej przestrzeni nazw Microsoft    23
    Dostęp do przestrzeni nazw w kodzie programu    23
    Odwołania do pakietów zewnętrznych    24
  Analiza pakietu w programie ildasm.exe    25
    Przeglądanie kodu CIL    26
    Przeglądanie metadanych typu    27
    Przeglądanie metadanych pakietu (manifestu)    27
  Niezależność .NET od platformy systemowej    28
    Projekt Mono    29
    Microsoft .NET Core    29
  Podsumowanie    30
  Rozdział 2 Tworzenie aplikacji w języku C#    31
  Tworzenie aplikacji C# w systemie operacyjnym Windows    31
    Rodzina IDE: Visual Studio Express    32
    Środowisko Visual Studio Community Edition    39
    Projektant klas – Class Designer    39
    Środowisko Visual Studio 2015 Professional    43
    System dokumentacji .NET Framework    44
  Tworzenie aplikacji .NET w innych systemach operacyjnych    45
    Xamarin Studio    46
  Podsumowanie    48
  Część II Podstawy programowania w języku C#    49
  Rozdział 3 Podstawowe konstrukcje programistyczne języka C#, część 1    51
  Anatomia prostego programu C#    51
    Warianty metody Main( )    53
    Określanie kodu błędu aplikacji    53
    Przetwarzanie argumentów z wiersza poleceń    55
    Podawanie argumentów wiersza poleceń w Visual Studio    56
  Ciekawostka: kilka kolejnych składowych klasy System.Environment    57
  Klasa System.Console    58
    Podstawowe operacje we/wy z klasą Console    58
    Formatowanie wyników na konsoli    60
    Formatowanie danych liczbowych    60
    Formatowanie danych liczbowych poza aplikacjami konsolowymi    61
  Systemowe typy danych i odpowiadające im słowa kluczowe C#    62
    Deklarowanie i inicjalizowanie zmiennych    63
    Wbudowane typy danych i operator new    64
    Hierarchia klas typów danych    65
    Składowe liczbowych typów danych    66
    Składowe typu System.Boolean    67
    Składowe typu System.Char    67
    Analiza składniowa (parsing) wartości z danych łańcuchowych    67
    Typy System.DateTime i System.TimeSpan    68
    Pakiet System.Numerics.dll    68
  Używanie danych łańcuchowych    70
    Podstawowe operacje na łańcuchach    70
    Konkatenacja łańcuchów    71
    Znaki ucieczki    72
    Definiowanie łańcuchów dosłownych    72
    Porównywanie łańcuchów    73
    Łańcuchów nie można modyfikować    73
    Typ System Text StringBuilder    75
    Interpolacja łańcuchów    76
  Zawężające i rozszerzające konwersje typów danych    77
    Słowo kluczowe checked    79
    Ustawianie sprawdzania nadmiaru w całym projekcie    81
    Słowo kluczowe unchecked    82
  Zmienne lokalne z typizacją niejawną    82
    Ograniczenia niejawnej typizacji zmiennych    83
    Dane z niejawną typizacją to dane z silną typizacją    84
    Przydatność zmiennych lokalnych z niejawną typizacją    85
  Konstrukcje iteracyjne w języku C#    86
    Pętla for    86
    Pętla foreach    87
    Stosowanie niejawnej typizacji w konstrukcjach foreach    87
    Pętle while i do/while    88
  Konstrukcje decyzyjne i operatory porównania/równości    88
    Instrukcja if/else    88
    Operatory równości i relacyjne    89
    Operatory warunkowe    89
    Instrukcja switch    90
  Podsumowanie    92
  Rozdział 4 Podstawowe konstrukcje programistyczne języka C#, część 2    93
  Metody i modyfikatory parametrów    93
    Domyślne przekazywanie parametrów – przez wartość    94
    Modyfikator out    95
    Modyfikator ref    96
    Modyfikator params    97
    Definiowanie parametrów opcjonalnych    98
    Wywoływanie metod za pomocą parametrów nazwanych    100
    Przeciążanie metod    101
  Tablice w języku C#    103
    Składnia inicjalizacji tablic w języku C#    104
    Tablice lokalne z typizacją niejawną    105
    Definiowanie tablicy obiektów    105
    Tablice wielowymiarowe    106
    Tablice jako argumenty lub wartości zwracane    107
    Klasa bazowa System.Array    108
  Wyliczenia    110
    Określanie typu bazowego    111
    Deklarowanie zmiennych typu wyliczeniowego    111
    Typ System.Enum    112
    Dynamiczne wykrywanie par nazwa/wartość wyliczenia    113
  Struktury (typy wartościowe)    115
    Tworzenie zmiennych strukturalnych    116
  Typy wartościowe a typy referencyjne    117
    Typy wartościowe, typy referencyjne i operator przypisania    118
    Typy wartościowe zawierające typy referencyjne    120
    Przekazywanie typów referencyjnych przez wartość    121
    Przekazywanie typów referencyjnych przez referencję    122
    Ostatnie słowo na temat typów wartościowych i typów referencyjnych    123
  Typy dopuszczające wartości null    124
    Używanie typów dopuszczających wartości null    125
    Operator scalający wartości null    126
    Operator warunkowy dla wartości null    127
  Podsumowanie    128
  Część III Programowanie obiektowe w języku C#    129
  Rozdział 5 Hermetyzacja    131
  Wprowadzenie do klas w języku C#    131
    Alokowanie obiektów za pomocą słowa kluczowego new    133
  Konstruktory    134
    Rola konstruktora domyślnego    134
    Definiowanie konstruktorów niestandardowych    135
    Konstruktor domyślny raz jeszcze    136
  Rola słowa kluczowego this    137
    Szeregowanie wywołań konstruktorów z użyciem słowa kluczowego this    139
    Obserwacja przepływu konstruktorów    141
    Argumenty opcjonalne raz jeszcze    143
  Słowo kluczowe static    144
    Definiowanie statycznych pól danych    145
    Definiowanie statycznych metod    146
    Definiowanie statycznych konstruktorów    147
    Definiowanie statycznych klas    150
    Importowanie statycznych składowych za pomocą słowa kluczowego using    150
  Filary programowania obiektowego    151
    Znaczenie hermetyzacji    152
    Znaczenie dziedziczenia    152
    Znaczenie polimorfizmu    154
  Modyfikatory dostępu w języku C#    155
    Domyślne modyfikatory dostępu    156
    Modyfikatory dostępu a typy zagnieżdżone    156
  Pierwszy filar: usługi hermetyzacji C#    157
    Hermetyzacja z użyciem tradycyjnych metod pobierającej i ustawiającej    158
    Hermetyzacja za pomocą właściwości .NET    160
    Używanie właściwości w definicji klasy    163
    Właściwości tylko do odczytu i tylko do zapisu    164
    Słowo kluczowe static raz jeszcze: definiowanie właściwości statycznych    165
  Właściwości automatyczne    165
    Używanie właściwości automatycznych    167
    Właściwości automatyczne i wartości domyślne    167
    Inicjalizacja właściwości automatycznych    169
  Składnia inicjalizacji obiektów    170
    Wywoływanie niestandardowych konstruktorów za pomocą składni inicjalizacji    171
    Inicjalizacja danych z użyciem składni inicjalizacji    172
  Używanie stałych pól danych    173
    Pola tylko do odczytu    175
    Statyczne pola tylko do odczytu    175
  Klasy częściowe    176
    Kiedy używać klas częściowych?    177
  Podsumowanie    177
  Rozdział 6 Dziedziczenie i polimorfizm    179
  Podstawowe zasady dziedziczenia    179
    Określanie klasy nadrzędnej dla klasy istniejącej    180
    Słowo kluczowe sealed    182
  Diagramy klas w Visual Studio raz jeszcze    183
  Drugi filar programowania obiektowego: szczegóły na temat dziedziczenia    185
    Tworzenie klas bazowych pod kontrolą – słowo kluczowe base    186
    Co w rodzinie, to nie zginie: słowo kluczowe protected    188
    Dodawanie klasy zapieczętowanej    189
  Programowanie na zasadzie zawierania/delegacji    190
    Definiowanie typów zagnieżdżonych    191
  Trzeci filar programowania obiektowego: polimorfizm    193
    Słowa kluczowe virtual i override    194
    Nadpisywanie wirtualnych składowych w Visual Studio    196
    Pieczętowanie wirtualnych składowych    197
    Klasy abstrakcyjne    198
    Interfejs polimorficzny    199
    Przesłanianie składowych    203
  Zasady rzutowania klasa bazowa/klasa pochodna    205
    Słowo kluczowe as    206
    Słowo kluczowe is    208
  Najważniejsza klasa nadrzędna: System.Object    208
    Nadpisywanie metody System.Object.ToString()    211
    Nadpisywanie metody System.Object.Equals()    212
    Nadpisywanie metody System.Object.GetHashCode()    213
    Testowanie zmodyfikowanej klasy Person    214
    Statyczne składowe klasy System.Object    215
  Podsumowanie    215
  Rozdział 7 Strukturalna obsługa wyjątków    217
  Oda do błędów i wyjątków    217
  Rola obsługi wyjątków .NET    218
    Kluczowe elementy obsługi wyjątków na platformie .NET    219
    Klasa bazowa System.Exception    219
  Przykład najprostszy z możliwych    220
    Zgłaszanie ogólnego wyjątku    222
    Przechwytywanie wyjątków    224
  Konfigurowanie stanu wyjątku    225
    Właściwość TargetSite    225
    Właściwość StackTrace    226
    Właściwość HelpLink    226
    Właściwość Data    227
  Wyjątki systemowe (System.SystemException)    229
  Wyjątki na poziomie aplikacji (System.ApplicationException)    230
    Tworzenie wyjątków niestandardowych, odsłona 1    230
    Tworzenie wyjątków niestandardowych, odsłona 2    232
    Tworzenie wyjątków niestandardowych, odsłona 3    233
  Przetwarzanie wielu wyjątków    234
    Ogólne instrukcje catch    236
    Ponowne zgłaszanie wyjątków    237
    Wyjątki wewnętrzne    237
    Blok finally    238
    Filtrowanie wyjątków    239
  Debugowanie nieobsłużonych wyjątków w Visual Studio    240
  Podsumowanie    241
  Rozdział 8 Interfejsy    243
  Interfejsy    243
    Interfejsy a abstrakcyjne klasy bazowe    244
  Definiowanie niestandardowych interfejsów    246
  Implementowanie interfejsu    248
  Wywoływanie składowych interfejsu na poziomie obiektu    250
    Uzyskiwanie referencji do interfejsu: słowo kluczowe as    251
    Uzyskiwanie referencji do interfejsu: słowo kluczowe is    251
  Interfejsy jako parametry    252
  Interfejsy jako wartości zwracane    254
  Tablice interfejsów    255
  Implementowanie interfejsów w Visual Studio    256
  Jawna implementacja interfejsu    257
  Projektowanie hierarchii interfejsów    259
    Dziedziczenie wielokrotne a interfejsy    261
  Interfejsy IEnumerable i IEnumerator    263
    Tworzenie iteratorów za pomocą słowa kluczowego yield    265
    Tworzenie nazwanego iteratora    266
  Interfejs ICloneable    267
  Bardziej złożony przykład klonowania    269
  Interfejs IComparable    272
    Określanie wielu porządków sortowania za pomocą interfejsu IComparer    275
    Niestandardowe właściwości i typy sortowania    276
  Podsumowanie    276
  Część IV Zaawansowane programowanie w języku C#    277
  Rozdział 9 Kolekcje i typy generyczne    279
  Uzasadnienie używania klas kontenerowych    279
    Przestrzeń nazw System.Collections    281
    Przegląd przestrzeni nazw System.Collections.Specialized    282
  Problemy z kolekcjami niegenerycznymi    283
    Problem z wydajnością    283
    Problem z bezpieczeństwem typów    287
    Kolekcje generyczne – pierwsze spotkanie    289
  Generyczne parametry określające typ    290
    Określanie parametrów typu dla generycznych klas/struktur    291
    Określanie parametrów typu dla generycznych składowych    293
    Określanie parametrów typu dla generycznych interfejsów    293
  Przestrzeń nazw System.Collections.Generic    294
    Składnia inicjalizacji kolekcji    295
    Używanie klasy List    297
    Używanie klasy Stack    298
    Używanie klasy Queue    299
    Używanie klasy SortedSet    300
    Używanie klasy Dictionary    302
  Przestrzeń nazw System.Collections.ObjectModel    303
    Używanie klasy ObservableCollection    303
  Tworzenie niestandardowych metod generycznych    305
    Inferencja parametrów określających typ    307
  Tworzenie niestandardowych generycznych struktur i klas    309
    Słowo kluczowe default w generycznym kodzie    310
  Ograniczenia stosowania parametrów określających typ    311
    Przykłady ze słowem kluczowym where    312
    Brak operatorów w ograniczeniach    313
  Podsumowanie    314
  Rozdział 10 Delegaty, zdarzenia i wyrażenia lambda    315
  Delegaty na platformie .NET    315
    Definiowanie delegatów w języku C#    316
    Klasy bazowe System.MulticastDelegate i System.Delegate    318
  Najprostszy z możliwych przykładowy delegat    319
    Analiza obiektu delegatu    321
  Wysyłanie powiadomień o stanie obiektu za pomocą delegatów    322
    Możliwość multiemisji    325
    Usuwanie celów z listy wywołań delegatu    326
    Technika grupowej konwersji metod    327
  Delegaty generyczne    329
    Generyczne delegaty Action<> i Func<>    330
  Zdarzenia w języku C#    332
    Słowo kluczowe event w języku C#    333
    Zdarzenia pod maską    335
    Nasłuchiwanie nadchodzących zdarzeń    336
    Upraszczanie rejestracji zdarzeń za pomocą Visual Studio    337
    Oczyszczanie wywoływania zdarzeń za pomocą operatora warunkowego dla wartości null języka C# w wersji 6.0    338
    Tworzenie niestandardowych argumentów zdarzeń    339
    Generyczny delegat EventHandler    340
  Anonimowe metody C#    341
    Dostęp do zmiennych lokalnych    343
  Wyrażenia lambda    344
    Analiza wyrażenia lambda    347
    Przetwarzanie argumentów w wielu instrukcjach    348
    Wyrażenia lambda z wieloma parametrami (i bez parametrów)    349
      Wyposażanie przykładu CarEvents w wyrażenia lambda    350
    Wyrażenie lambda i implementacje składowych w jednej instrukcji    350
  Podsumowanie    351
  Rozdział 11 Zaawansowane elementy języka C#    353
  Indeksery    353
    Indeksowanie danych za pomocą wartości łańcuchowych    355
    Przeciążanie indekserów    356
    Indeksery z wieloma wymiarami    357
    Definiowanie indekserów w interfejsach    358
  Przeciążanie operatorów    358
    Przeciążanie operatorów dwuargumentowych    359
    A co z operatorami += i –+?    361
    Przeciążanie operatorów jednoargumentowych    362
    Przeciążanie operatorów równości    362
    Przeciążanie operatorów porównania    363
    Ostatnie uwagi na temat przeciążania operatorów    364
  Konwersje niestandardowych typów    365
    Powtórka: konwersje liczbowe    365
    Powtórka: konwersje między spokrewnionymi klasami    365
    Tworzenie niestandardowych procedur konwersji    366
    Dodatkowe jawne konwersje dla typu Square    368
    Definiowanie procedur niejawnej konwersji    369
  Metody rozszerzające    371
    Definiowanie metod rozszerzających    371
    Wywoływanie metod rozszerzających    372
    Importowanie metod rozszerzających    373
    IntelliSense dla metod rozszerzających    373
    Rozszerzanie typów, w których zaimplementowano konkretne interfejsy    374
  Typy anonimowe    375
    Definiowanie typu anonimowego    376
    Wewnętrzna reprezentacja typów anonimowych    377
    Implementacja metod ToString() i GetHashCode()    378
    Semantyka równości dla typów anonimowych    378
    Typy anonimowe zawierające typy anonimowe    380
  Używanie typów wskaźnikowych    381
    Słowo kluczowe unsafe    382
    Używanie operatorów * i &    384
    Nienadzorowana (i nadzorowana) funkcja wymiany    384
    Dostęp do pól za pomocą wskaźników (operator ->)    385
    Słowo kluczowe stackalloc    386
    Przypinanie typu za pomocą słowa kluczowego fixed    386
    Słowo kluczowe sizeof    387
  Podsumowanie    388
  Rozdział 12 LINQ to Objects    389
  Konstrukcje programistyczne związane z zapytaniami LINQ    389
    Niejawna typizacja zmiennych lokalnych    390
    Składnia inicjalizacji obiektów i kolekcji    390
    Wyrażenia lambda    391
    Metody rozszerzające    392
    Typy anonimowe    392
  Rola zapytań LINQ    393
    Wyrażenia LINQ mają silną typizację    394
    Najważniejsze pakiety LINQ    394
  Używanie zapytań LINQ z prostymi tablicami    395
    To samo raz jeszcze, ale bez LINQ    396
    Refleksja na zbiorze wyników LINQ    397
    LINQ a zmienne lokalne z typizacją niejawną    397
    LINQ a metody rozszerzające    398
    Rola odroczonego wykonywania    399
    Rola wykonywania natychmiastowego    400
  Zwracanie wyników zapytania LINQ    401
    Zwracanie wyników LINQ za pomocą natychmiastowego wykonania    402
  Stosowanie zapytań LINQ do obiektów kontenerowych    403
    Dostęp do podobiektów    404
    Używanie zapytań LINQ z kolekcjami niegenerycznymi    404
    Filtrowanie danych za pomocą OfType( )    405
  Omówienie operatorów do zapytań LINQ    406
    Składnia podstawowego wybierania    407
    Uzyskiwanie podzbiorów danych    408
    Projekcja nowych typów danych    409
    Uzyskiwanie liczników za pomocą Enumerable    410
    Odwracanie kolejności elementów w zbiorze wyników    410
    Sortowanie wyrażeń    410
    LINQ jako ulepszone narzędzie do tworzenia diagramów Venna    411
    Usuwanie duplikatów    412
    Działania agregacyjne LINQ    413
  Wewnętrzna reprezentacja instrukcji z zapytaniami LINQ    413
    Konstruowanie wyrażeń z zapytaniami za pomocą operatorów (powtórka)    414
    Konstruowanie wyrażeń z zapytaniami za pomocą typu Enumerable i wyrażeń lambda    415
    Konstruowanie wyrażeń z zapytaniami za pomocą typu Enumerable i metod anonimowych    416
    Konstruowanie wyrażeń z zapytaniem za pomocą typu Enumerable i bezpośrednio delegatów    417
  Podsumowanie    418
  Rozdział 13 Czas życia obiektu    419
  Klasy, obiekty i referencje    419
  Podstawowe informacje o czasie życia obiektów    420
    Kod CIL słowa kluczowego new    421
    Ustawianie referencji do obiektów na null    422
  Korzenie aplikacji    423
  Generacje obiektów    424
  Współbieżne odzyskiwanie pamięci przed .NET 4.0    425
  Drugoplanowe odzyskiwanie pamięci od wersji .NET 4.0 wzwyż    426
  Typ System.GC    426
    Wymuszanie odzyskiwania pamięci    427
  Tworzenie obiektów do sfinalizowania    430
    Nadpisywanie metody System.Object.Finalize()    431
    Szczegóły na temat procesu finalizacji    432
  Tworzenie obiektów usuwalnych    433
    Wielokrotne użycie słowa kluczowego using    435
  Tworzenie typów finalizowalnych i usuwalnych    436
    Formalny schemat usuwania    437
  Leniwe tworzenie instancji obiektów    439
    Dostosowywanie tworzenia leniwych danych    442
  Podsumowanie    443
  Część V Programowanie z wykorzystaniem pakietów .NET    445
  Rozdział 14 Tworzenie i konfiguracja bibliotek klas    447
  Definiowanie niestandardowych przestrzeni nazw    447
    Rozwiązywanie konfliktów nazw za pomocą pełnych nazw jednoznacznych    449
    Rozwiązywanie konfliktów nazw za pomocą aliasów    450
    Tworzenie zagnieżdżonych przestrzeni nazw    452
    Domyślna przestrzeń nazw w Visual Studio    453
  Rola pakietów .NET    453
    Pakiety sprzyjają tworzeniu kodu wielokrotnego użytku    453
    Pakiety wyznaczają granice typu    454
    Pakiety to jednostki z numerami wersji    454
    Pakiety zawierają własny opis    454
    Pakiety można konfigurować    455
  Format pakietu .NET    455
    Nagłówek pliku Windows    455
    Nagłówek pliku CLR    456
    Kod CIL, metadane typu i manifest pakietu    457
    Opcjonalne zasoby pakietu    457
  Tworzenie i używanie niestandardowej biblioteki z klasą    458
    Analiza manifestu    460
    Analiza kodu CIL    463
    Analiza metadanych typu    463
    Tworzenie aplikacji klienckiej w języku C#    464
    Tworzenie aplikacji klienckiej w języku Visual Basic    466
    Dziedziczenie wielojęzyczne w działaniu    467
  Pakiety prywatne    467
    Tożsamość pakietu prywatnego    468
    Proces sondowania    468
    Konfigurowanie pakietów prywatnych    469
    Rola pliku App.Config    470
  Pakiety współdzielone    472
    Globalny katalog pakietów (GAC)    472
    Silne nazwy    474
    Generowanie silnych nazw w wierszu poleceń    475
    Generowanie silnych nazw w Visual Studio    477
    Instalowanie pakietów z silnymi nazwami w GAC    478
  Używanie współdzielonego pakietu    479
    Analiza manifestu SharedCarLibClient    480
  Konfigurowanie pakietów współdzielonych    481
    Zamrażanie bieżącego pakietu współdzielonego    481
    Tworzenie współdzielonego pakietu wersja 2.0.0.0    481
    Dynamiczne przekierowywanie do konkretnych wersji współdzielonego pakietu    484
  Pakiety z zasadami wydawcy    485
    Wyłączanie zasad wydawcy    486
  Element    486
  Przestrzeń nazw System.Configuration    488
  Dokumentacja na temat schematu pliku konfiguracyjnego    489
  Podsumowanie    490
  Rozdział 15 Refleksja typów, późne wiązanie i programowanie z wykorzystaniem atrybutów    491
  Zapotrzebowanie na metadane typów    491
    Przeglądanie (fragmentu) metadanych dla wyliczenia EngineState    492
    Przeglądanie (fragmentu) metadanych typu Car    493
    Omówienie TypeRef    494
    Informacje o bieżącym pakiecie    494
    Informacje o używanych pakietach zewnętrznych    495
    Informacje o literałach łańcuchowych    495
  Refleksja    496
    Klasa System.Type    496
    Uzyskiwanie referencji do typu za pomocą System.Object.GetType()    497
    Uzyskiwanie referencji do typu za pomocą typeof()    497
    Uzyskiwanie referencji do typu za pomocą System.Type.GetType()    498
  Tworzenie niestandardowej przeglądarki metadanych    498
    Refleksja na metodach    498
    Refleksja na polach i właściwościach    499
    Refleksja na zaimplementowanych interfejsach    500
    Wyświetlanie różnych mniej istotnych informacji    500
    Implementacja metody Main()    500
    Refleksja na typach generycznych    502
    Refleksja na parametrach i wartościach zwracanych    502
  Dynamiczne wczytywanie pakietów    504
  Refleksja na pakietach współdzielonych    506
  Późne dowiązywanie    508
    Klasa System.Activator    508
    Wywoływanie metod bez parametrów    510
    Wywoływanie metod z parametrami    511
  Rola atrybutów .NET    512
    Użytkownicy atrybutów    512
    Stosowanie atrybutów w języku C#    513
    Skrótowy zapis atrybutów C#    514
    Podawanie parametrów konstrukcyjnych dla atrybutów    514
    Atrybut [Obsolete] w działaniu    515
  Tworzenie niestandardowych atrybutów    516
    Stosowanie atrybutów niestandardowych    516
    Składnia nazwanych właściwości    517
    Ograniczanie stosowania atrybutów    517
  Atrybuty na poziomie pakietu    518
    Plik AssemblyInfo cs w Visual Studio    519
  Refleksja na atrybutach z użyciem wczesnego dowiązywania    519
  Refleksja na atrybutach z użyciem późnego dowiązywania    521
  Refleksja, późne dowiązywanie i niestandardowe atrybuty z lotu ptaka    522
  Tworzenie rozszerzalnej aplikacji    523
    Tworzenie pakietu CommonSnappableTypes dll    523
    Tworzenie wtyczki w języku C#    524
    Tworzenie wtyczki w języku Visual Basic    525
    Tworzenie rozszerzalnej aplikacji Windows Forms    525
  Podsumowanie    529
  Rozdział 16 Typy dynamiczne i środowisko DLR    531
  Rola słowa kluczowego dynamic    531
    Wywoływanie składowych względem dynamicznie zadeklarowanych danych    533
    Rola pakietu Microsoft.CSharp.dll    534
    Zasięg słowa kluczowego dynamic    535
    Ograniczenia słowa kluczowego dynamic    536
    Praktyczne zastosowania słowa kluczowego dynamic    536
  Rola środowiska DLR    537
    Drzewa wyrażeń    537
    Przestrzeń nazw System.Dynamic    538
    Dynamiczne wyszukiwanie drzew wyrażeń    538
  Upraszczanie wywołań z późnym dowiązywaniem za pomocą typów dynamicznych    539
    Używanie słowa kluczowego dynamic do przekazania argumentów    540
  Upraszczanie współpracy z COM za pomocą danych dynamicznych    542
    Podstawowe pakiety współdziałania    543
    Osadzanie metadanych współdziałania    544
    Najczęściej występujące problemy ze współpracą z kodem COM    544
  Współpraca z COM z użyciem dynamicznych danych C#    545
    Współpraca z COM bez danych dynamicznych    549
  Podsumowanie    550
  Rozdział 17 Procesy, domeny aplikacji i konteksty obiektów    551
  Rola procesów Windows    551
    Rola wątków    552
  Komunikacja z procesami na platformie .NET    553
    Wyliczanie uruchomionych procesów    554
    Analiza konkretnego procesu    556
    Analiza zbioru wątków procesu    557
    Analiza zbioru modułów procesu    558
    Rozpoczynanie i zatrzymywanie procesów w kodzie programu    560
    Kontrolowanie rozpoczynania procesów za pomocą klasy ProcessStartInfo    561
  Domeny aplikacji .NET    562
    Klasa System AppDomain    562
  Komunikacja z domyślną domeną aplikacji    563
    Wyliczanie załadowanych pakietów    564
    Odbiór powiadomień o załadowaniu pakietu    566
  Tworzenie nowych domen aplikacji    566
    Wczytywanie pakietów do niestandardowych domen aplikacji    568
    Usuwanie domen aplikacji w kodzie programu    569
  Granice kontekstowe obiektów    570
    Typy niezwiązane i związane kontekstem    571
    Definiowanie obiektu kontekstowego    572
    Analiza kontekstu obiektu    572
  Podsumowanie procesów, domen aplikacji i kontekstów    574
  Podsumowanie    574
  Rozdział 18 CIL i rola pakietów dynamicznych    575
  Motywacja do nauki gramatyki CIL    575
  Analiza dyrektyw, atrybutów i kodów operacyjnych CIL    576
    Dyrektywy CIL    576
    Atrybuty CIL    577
    Kody operacyjne CIL    577
    Różnica między kodami operacyjnymi a mnemonikami    577
  Wrzucanie i zrzucanie: znaczenie stosu w języku CIL    578
  Inżynieria wahadłowa    579
    Etykiety kodu CIL    582
    Komunikacja z kodem CIL: modyfikowanie pliku *.il    583
    Kompilowanie kodu CIL w programie ilasm.exe    584
    Rola programu peverify.exe    585
  Dyrektywy i atrybuty CIL    585
    Podawanie wymaganych pakietów zewnętrznych w CIL    586
    Definiowanie bieżącego pakietu w CIL    586
    Definiowanie przestrzeni nazw w CIL    587
    Definiowanie klas w CIL    587
    Definiowanie i implementowanie interfejsów w CIL    588
    Definiowanie struktur w CIL    589
    Definiowanie wyliczeń w CIL    589
    Definiowanie typów generycznych w kodzie CIL    590
    Kompilowanie pliku CILTypes.il    590
  Związek między bazowymi bibliotekami klas, językiem C# i typami danych CIL    591
  Definiowanie składowych w CIL    591
    Definiowanie pól z danymi w CIL    592
    Definiowanie konstruktorów w CIL    592
    Definiowanie właściwości w CIL    593
    Definiowanie parametrów składowych    593
  Kody operacyjne CIL    594
    Dyrektywa .maxstack    596
    Deklarowanie zmiennych lokalnych w CIL    596
    Odwzorowywanie parametrów na zmienne lokalne w CIL    597
    Ukryta referencja this    597
    Reprezentacja konstrukcji iteracyjnych w CIL    598
  Tworzenie pakietu .NET w CIL    599
    Tworzenie pakietu CILCars.dll    599
    Tworzenie pakietu CILCarClient.exe    602
  Pakiety dynamiczne    603
    Analiza przestrzeni nazw System.Reflection.Emit    604
    Typ System Reflection Emit.ILGenerator    605
    Generowanie pakietu dynamicznego    605
    Generowanie pakietu i zbioru modułów    607
    Znaczenie typu ModuleBuilder    608
    Generowanie typu HelloClass i łańcuchowej zmiennej składowej    609
    Generowanie konstruktorów    609
    Generowanie metody SayHello()    610
    Używanie dynamicznie wygenerowanego pakietu    611
  Podsumowanie    612
  Część VI Wprowadzenie do bibliotek klas bazowych .NET    613
  Rozdział 19 Programowanie wielowątkowe, równoległe i asynchroniczne    615
  Relacja między procesami, domenami aplikacji, kontekstem i wątkami    615
    Problem współbieżności    616
    Synchronizacja wątków    617
  Krótka powtórka z delegatów .NET    617
  Asynchroniczna natura delegatów    619
    Metody BeginInvoke() i EndInvoke()    619
    Interfejs System.IAsyncResult    620
  Asynchroniczne wywoływanie metod    620
    Synchronizacja wątku wywołującego    621
    Delegat AsyncCallback    623
    Klasa AsyncResult    624
    Przekazywanie i odbieranie niestandardowych danych o stanie    625
  Przestrzeń nazw System.Threading    626
  Klasa System.Threading.Thread    627
    Uzyskiwanie statystyk dotyczących bieżącego wątku wykonywania    628
    Właściwość Name    628
    Właściwość Priority    629
  Ręczne tworzenie wątków podrzędnych    629
    Używanie delegatu ThreadStart    630
    Używanie delegatu ParameterizedThreadStart    632
    Klasa AutoResetEvent    633
    Wątki pierwszo- i drugoplanowe    634
  Problem współbieżności    635
    Synchronizacja za pomocą słowa kluczowego lock    637
    Synchronizacja za pomocą typu System.Threading.Monitor    639
    Synchronizacja za pomocą typu System.Threading.Interlocked    640
    Synchronizacja za pomocą atrybutu [Synchronization]    641
  Programowanie z użyciem delegatu TimerCallback    641
  Pula wątków CLR    643
  Programowanie równoległe z wykorzystaniem TPL (Task Parallel Library)    644
    Przestrzeń nazw System.Threading.Tasks    645
    Rola klasy Parallel    645
    Równoległość danych i klasa Parallel    646
    Dostęp do elementów IU z wątków podrzędnych    648
    Klasa Task    649
    Obsługa żądań anulowania    649
    Równoległość zadań a klasa Parallel    651
  Równoległe zapytania LINQ (PLINQ)    654
    Wybór zapytania PLINQ    655
    Anulowanie zapytania PLINQ    655
  Wywołania asynchroniczne z użyciem słowa kluczowego async    656
    Pierwsze spojrzenie na słowa kluczowe async i await    657
    Konwencja nazewnicza metod asynchronicznych    658
    Metody asynchroniczne zwracające void    659
    Metody asynchroniczne z wieloma słowami kluczowymi await    660
    Przeróbka przykładu AddWithThreads ze słowami kluczowymi async/await    661
  Podsumowanie    662
  Rozdział 20 Plikowe operacje we/wy oraz serializacja obiektów    663
  Przestrzeń nazw System.IO    663
  Typy Directory(Info) i File(Info)    664
    Abstrakcyjna klasa bazowa FileSystemInfo    665
  Używanie typu DirectoryInfo    665
    Wyliczanie plików za pomocą typu DirectoryInfo    667
    Tworzenie podkatalogów za pomocą typu DirectoryInfo    667
  Używanie typu Directory    669
  Używanie klasy DriveInfo    669
  Używanie klasy FileInfo    670
    The FileInfo Create() Method    671
    Metoda FileInfo Open()    672
    Metody FileInfo OpenRead() i FileInfo OpenWrite()    673
    Metoda FileInfo OpenText()    673
    Metody FileInfo CreateText() i FileInfo AppendText()    674
  Używanie typu File    674
    Inne składowe typu File    675
  Abstrakcyjna klasa Stream    676
    Używanie klasy FileStream    677
  Używanie klas StreamWriter i StreamReader    678
    Zapisywanie do pliku tekstowego    679
    Odczytywanie z pliku tekstowego    680
    Bezpośrednie tworzenie obiektów StreamWriter/StreamReader    680
  Używanie klas StringWriter i StringReader    681
  Używanie klas BinaryWriter i BinaryReader    682
  Programistyczne monitorowanie plików    684
  Serializacja obiektów    686
    Rola grafów obiektów    687
  Konfiguracja obiektów do serializacji    688
    Definiowanie serializowalnych typów    688
    Pola publiczne, pola prywatne i właściwości publiczne    689
  Wybór typu z kategorii Formatter do serializacji    690
    Interfejsy IFormatter i IRemotingFormatter    691
    Jak różne formatery utrwalają typy    692
  Serializacja obiektów za pomocą typu BinaryFormatter    692
    Deserializacja obiektów za pomocą typu BinaryFormatter    694
  Serializacja obiektów za pomocą typu SoapFormatter    694
  Serializacja obiektów za pomocą typu XmlSerializer    695
    Kontrola nad generowanymi danymi XML    696
  Serializacja kolekcji obiektów    698
  Dostosowywanie serializacji SOAP/binarnej    699
    Serializacja obiektów pod lupą    699
    Dostosowywanie serializacji za pomocą interfejsu ISerializable    700
    Dostosowywanie serializacji za pomocą atrybutów    703
  Podsumowanie    704
  Rozdział 21 ADO.NET – część 1: warstwa połączeniowa    705
  Ogólna definicja ADO.NET    705
    Trzy oblicza ADO.NET    707
  Dostawcy danych ADO.NET    707
    Dostawcy danych ADO.NET od Microsoftu    709
    Słowo o pakiecie System Data OracleClient.dll    710
    Uzyskiwanie dostawców danych ADO.NET od innych producentów    710
  Dodatkowe przestrzenie nazw ADO.NET    710
  Typy z przestrzeni nazw System.Data    711
    Interfejs IDbConnection    712
    Interfejs IDbTransaction    712
    Interfejs IDbCommand    712
    Interfejsy IDbDataParameter i IDataParameter    713
    Interfejsy IDbDataAdapter i IDataAdapter    713
    Interfejsy IDataReader i IDataRecord    714
  Ukrywanie dostawców danych za pomocą interfejsów    715
    Zwiększanie elastyczności za pomocą plików konfiguracyjnych aplikacji    717
  Tworzenie bazy danych AutoLot    718
    Tworzenie tabeli Inventory    719
    Dodawanie do tabeli Inventory rekordów testowych    721
    Tworzenie składowanej procedury GetPetName()    721
    Tworzenie tabel Customers i Orders    722
    Tworzenie relacji między tabelami w Visual Studio    724
  Model fabryki dostawcy danych ADO.NET    725
    Pełny przykład z fabryką dostawcy danych    726
    Potencjalna wada modelu fabryki dostawcy danych    729
    Element    730
  Warstwa połączeniowa ADO.NET    731
    Używanie obiektów połączenia    732
    Używanie obiektów ConnectionStringBuilder    734
    Używanie obiektów polecenia    735
  Używanie typów DataReader    736
    Uzyskiwanie wielu zbioru wyników za pomocą czytnika danych    737
  Tworzenie biblioteki dostępu do danych wielokrotnego użytku    738
    Dodawanie kodu połączenia    739
    Dodawanie kodu wstawiania    740
    Dodawanie kodu usuwania    741
    Dodawanie kodu aktualizacji    741
    Dodawanie kodu wybierania    742
    Używanie sparametryzowanych obiektów polecenia    743
    Podawanie parametrów za pomocą typu DbParameter    743
    Wywoływanie procedury składowanej    745
  Tworzenie nakładki na aplikację konsolową    746
    Implementowanie metody Main()    747
    Implementowanie metody ShowInstructions()    749
    Implementowanie metody ListInventory()    749
    Implementowanie metody DeleteCar()    750
    Implementowanie metody InsertNewCar()    750
    Implementowanie metody UpdateCarPetName()    751
    Implementowanie metody LookUpPetName()    751
  Transakcje bazodanowe    752
    Najważniejsze składowe obiektu transakcji ADO.NET    753
    Dodawanie tabeli CreditRisks do bazy danych AutoLot    754
    Dodawanie metody transakcyjnej do bazy danych InventoryDAL    754
    Testowanie transakcji bazodanowej    756
  Podsumowanie    757
  Rozdział 22 ADO NET – część 2: warstwa bezpołączeniowa    759
  Warstwa bezpołączeniowa ADO NET    759
  Rola typu DataSet    760
    Najważniejsze właściwości typu DataSet    761
    Najważniejsze metody typu DataSet    762
    Tworzenie obiektu DataSet    762
  Używanie typu DataColumn    763
    Tworzenie typu DataColumn    764
    Włączanie automatycznej inkrementacji w polach    764
    Dodawanie obiektów DataColumn do DataTable    765
  Używanie typu DataRow    765
    Właściwość RowState    767
    Właściwość DataRowVersion    768
  Używanie typu DataTable    769
    Wstawianie obiektów DataTable do obiektów DataSet    769
    Uzyskiwanie danych z obiektu DataSet    770
    Przetwarzanie danych DataTable za pomocą obiektów DataTableReader    771
    Serializacja obiektów DataTable/DataSet w formacie XML    772
    Serializacja obiektów DataTable/DataSet w formacie binarnym    773
  Dowiązywanie obiektów DataTable do GUI Windows Forms    774
    Wyodrębnianie obiektu DataTable z generycznego List    775
    Usuwanie wierszy z obiektu DataTable    777
    Wybieranie wierszy na podstawie kryteriów filtrowania    779
    Aktualizacja wierszy w obiekcie DataTable    781
    Używanie typu DataView    782
  Używanie adapterów danych    783
    Prosty przykład z adapterem danych    784
    Odwzorowanie nazw bazodanowych na nazwy przyjazne    786
  AutoLotDAL.dll    787
    Definiowanie początkowej klasy    787
    Konfiguracja adaptera danych za pomocą typu SqlCommandBuilder    787
    Implementacja metody GetAllInventory()    789
    Implementacja metody UpdateInventory()    789
    Ustawianie numeru wersji    789
    Testowanie funkcji bezpołączeniowych    789
  Obiekty DataSet z wieloma tabelami i relacjami danych    791
    Przygotowanie adapterów danych    792
    Tworzenie relacji między tabelami    793
    Modyfikacja tabel w bazie danych    794
    Nawigacja między powiązanymi ze sobą tabelami    794
  Narzędzia do projektowania baz danych Windows Forms    796
    Projektowanie kontrolki DataGridView w trybie graficznym    796
    Wygenerowany plik App config    800
    Analiza obiektów DataSet z silną typizacją    801
    Analiza obiektów DataTable z silną typizacją    802
    Analiza obiektów DataRow z silną typizacją    803
    Analiza adaptera danych z silną typizacją    804
    Kończenie aplikacji Windows Forms    805
  Wyodrębnianie kodu bazy danych z silną typizacją do biblioteki klasy    806
    Przeglądanie wygenerowanego kodu    806
    Wybieranie danych za pomocą wygenerowanego kodu    807
    Wstawianie danych za pomocą wygenerowanego kodu    809
    Usuwanie danych za pomocą wygenerowanego kodu    810
    Wywoływanie składowanej procedury za pomocą wygenerowanego kodu    810
  Programowanie z wykorzystaniem technologii LINQ to DataSet    811
    Biblioteka DataSetExtensions    813
    Uzyskiwanie obiektu DataTable kompatybilnego z LINQ    813
    Metoda rozszerzająca DataRowExtensions Field()    815
    Wypełnianie nowych obiektów DataTable na podstawie zapytań LINQ    815
  Podsumowanie    816
  Rozdział 23 ADO NET – część 3: Entity Framework    817
  Rola Entity Framework    817
    Rola encji    819
    Bloki budulcowe Entity Framework    821
  Code First z istniejącej bazy danych    825
    Generowanie modelu    825
    I co się wydarzyło?    827
    Zmiana domyślnego mapowania    830
    Dodawanie do wygenerowanych klas modeli    831
  Używanie klas modeli w kodzie    832
    Wstawianie rekordów    832
    Wybieranie rekordów    833
    Rola właściwości nawigacyjnych    836
    Usuwanie rekordów    838
    Aktualizacja rekordów    840
  Obsługa zmian w bazie danych    840
  AutoLotDAL wersja 4    840
    Adnotacje w Entity Framework    841
    Dodawanie lub aktualizacja klas modeli    842
    Dodawanie klasy wywodzącej się z DbContext    847
    Dodawanie repozytoriów    849
    Inicjalizacja bazy danych    857
  Testowanie AutoLotDAL    858
    Wyświetlanie wszystkich rekordów z repozytorium Inventory    859
    Dodawanie nowych rekordów do Inventory    859
    Edytowanie rekordów    860
    Używanie właściwości nawigacyjnych    861
    Działania na wielu tabelach/transakcje niejawne    862
  Migracje Entity Framework    863
    Aktualizowanie modelu    864
    Testowanie aplikacji    866
    Wprowadzenie do migracji EF    866
    Tworzenie migracji linii bazowej    866
    Ustawienie początkowych wartości bazy danych    870
  Testowanie transakcji raz jeszcze    871
  Współbieżność    872
    Korygowanie repozytoriów    873
    Testowanie współbieżności    873
  Przechwytywanie    874
    Interfejs IDbCommandInterceptor    874
    Dodawanie przechwytywania do AutoLotDAL    875
    Rejestrowanie interceptorów    876
    Dodawanie interceptora DatabaseLogger    876
  Zdarzenia ObjectMaterialized i SavingChanges    877
    Dostęp do kontekstu obiektu    877
    ObjectMaterialized    877
    SavingChanges    877
    Wdrażanie na SQL Server    878
  Podsumowanie    879
  Rozdział 24 Wprowadzenie do LINQ to XML    881
  Opowieść o dwóch API XML    881
    LINQ to XML jako ulepszony model DOM    883
    Składnia literałów VB jako ulepszony LINQ to XML    883
  Składowe przestrzeni nazw System Xml Linq    885
    Metody osiowe LINQ to XML    886
    Osobliwość XName (i XNamespace)    888
  Używanie typów XElement i XDocument    888
    Generowanie dokumentów z tablic i kontenerów    890
    Wczytywanie i analiza zawartości XML    892
  Operacje na dokumentach XML znajdujących się w pamięci    892
    Tworzenie interfejsu użytkownika aplikacji LINQ to XML    892
    Importowanie pliku Inventory xml    893
    Definiowanie klasy pomocniczej LINQ to XML    893
    Dołączanie interfejsu użytkownika do klasy pomocniczej    895
  Podsumowanie    896
  Rozdział 25 Wprowadzenie do WCF (Windows Communication Foundation)    897
  Potpourri rozproszonych API    897
    Rola modelu DCOM    898
    Rola COM+/Enterprise Services    898
    Rola MSMQ    899
    Warstwa zdalnego dostępu .NET    900
    Rola usług sieciowych XML    900
    Standardy usług sieciowych    900
  Znaczenie WCF    901
    Przegląd własności WCF    902
    Przegląd architektury usługowej    902
    Dogmat 1: Granice są jasno sprecyzowane    903
    Dogmat 2: Usługi są autonomiczne    903
    Dogmat 3: Usługi komunikują się na podstawie kontraktu, a nie implementacji    903
    Dogmat 4: Kompatybilność usług opiera się na zasadach    903
    WCF: Podsumowanie    903
  Analiza najważniejszych pakietów WCF    904
  Szablony projektów WCF w Visual Studio    904
    Szablon projektu witryny internetowej usługi WCF    905
  Podstawowa budowa aplikacji WCF    906
  ABC usług WCF    907
    Kontrakty WCF    908
    Dowiązania WCF    909
    Dowiązania HTTP    909
    Dowiązania TCP    910
    Dowiązania MSMQ    911
  Adresy WCF    911
  Tworzenie usługi WCF    912
    Atrybut [ServiceContract]    913
    Atrybut [OperationContract]    914
    Typy usługowe jako kontrakty operacyjne    914
  Hostowanie usługi WCF    915
    Ustalanie ABC w pliku App.config    916
    Kod dla typu ServiceHost    916
    Podawanie adresów bazowych    917
    Typ ServiceHost pod lupą    918
    Element pod lupą    920
    Umożliwianie wymiany metadanych    921
  Tworzenie klienckiej aplikacji WCF    923
    Generowanie kodu proxy za pomocą svcutil exe    923
    Generowanie kodu proxy w Visual Studio    924
    Konfigurowanie dowiązania TCP    926
  Upraszczanie ustawień konfiguracyjnych    927
    Wykorzystywanie domyślnych punktów końcowych    927
    Udostępnianie jednej usługi WCF z użyciem wielu dowiązań    929
    Zmiana ustawień dowiązania WCF    930
    Wykorzystywanie domyślnej konfiguracji działania MEX    931
    Odświeżanie klienckiego proxy i wybór dowiązania    932
  Używanie szablonu projektu WCF Service Library    934
    Tworzenie prostej usługi matematycznej    934
    Testowanie usługi WCF za pomocą WcfTestClient.exe    934
    Modyfikowanie plików konfiguracyjnych w programie SvcConfigEditor.exe    936
  Hostowanie usługi WCF w usłudze Windows    936
    Określanie ABC w kodzie    937
    Włączanie MEX    939
    Tworzenie instalatora usługi Windows    939
    Instalowanie usługi Windows    940
  Asynchroniczne wywoływanie usługi przez klienta    941
  Projektowanie kontraktów WCF    943
    Używanie sieciowego szablonu projektu usługi WCF    944
    Implementowanie kontraktu usługi    945
    Rola pliku *.svc    947
    Analiza pliku Web config    947
    Testowanie usługi    947
  Podsumowanie    948
  Część VII Windows Presentation Foundation    949
  Rozdział 26 Wprowadzenie do WPF (Windows Presentation Foundation) i XAML    951
  Po co jest WPF?    951
    Unifikacja różnych API    952
    Podział zadań za pomocą języka XAML    952
    Optymalny model renderowania    953
    Uproszczenie programowania skomplikowanych interfejsów użytkownika    953
  Różne odmiany WPF    954
    Tradycyjne aplikacje okienkowe    954
    Nawigacyjne aplikacje WPF    956
    Aplikacje XBAP    956
    Związek między WPF a Silverlight    958
  Analiza pakietów WPF    958
    Klasa Application    959
    Konstruowanie klasy Application    960
    Wyliczanie kolekcji Windows    960
    Klasa Window    961
  Tworzenie aplikacji WPF bez XAML    964
    Tworzenie klasy Window z silną typizacją    966
    Tworzenie prostego interfejsu użytkownika    967
    Używanie danych na poziomie aplikacji    968
    Obsługa zamykania obiektu Window    969
    Przechwytywanie zdarzeń myszy    971
    Przechwytywanie zdarzeń klawiatury    971
  Tworzenie aplikacji WPF jedynie przy użyciu XAML    972
    Definiowanie obiektu Window w XAML    974
    Definiowanie obiektu Application w XAML    975
    Przetwarzanie plików XAML za pomocą msbuild exe    976
  Przekształcanie znaczników na pakiet NET    977
    Odwzorowanie znakowania XAML dla Window w kodzie C#    977
    Rola BAML    979
    Odwzorowanie znakowania XAML aplikacji na kod C#    980
    Podsumowanie procesu przekształcania XAML na pakiet    980
  Składnia XAML WPF    981
    Wprowadzenie do Kaxaml    981
    Przestrzenie nazw i „słowa kluczowe” XAML    982
    Określanie widoczności klas i zmiennych składowych    984
    Elementy i atrybuty XAML oraz konwertery typów    985
    Składnia właściwość-element w XAML    986
    Załączane właściwości XAML    987
    Rozszerzenia znakowania XAML    988
  Tworzenie aplikacji WPF z użyciem plików code-behind    989
    Dodawanie pliku z kodem dla klasy MainWindow    990
  Dodawanie pliku z kodem dla klasy MyApp    991
    Przetwarzanie plików z kodem w programie msbuild exe    991
  Tworzenie aplikacji WPF w Visual Studio    992
    Szablony projektów WPF    992
    Przybornik i projektant/edytor XAML    994
    Ustawianie właściwości w oknie Properties    995
    Obsługa zdarzeń w oknie Properties    996
    Obsługa zdarzeń w edytorze XAML    997
    Okno Document Outline    997
    Przeglądanie automatycznie wygenerowanych plików z kodem    998
  Tworzenie niestandardowego edytora XAML w Visual Studio    999
    Projektowanie graficznego interfejsu użytkownika obiektu Window    999
    Implementacja zdarzenia Loaded    1000
    Implementacja zdarzenia Click przycisku    1001
    Implementacja zdarzenia Closed    1002
    Testowanie aplikacji    1003
    Poznawanie dokumentacji WPF    1004
  Podsumowanie    1004
  Rozdział 27 Programowanie z wykorzystaniem kontrolek WPF    1005
  Przegląd podstawowych kontrolek WPF    1005
    Kontrolki WPF Ink    1005
    Kontrolki dokumentów WPF    1006
    Najpopularniejsze okna dialogowe WPF    1006
    Szczegóły są w dokumentacji    1007
  Krótkie omówienie projektanta WPF w Visual Studio    1007
    Używanie kontrolek WPF w Visual Studio    1008
    Używanie edytora Document Outline    1009
  Kontrolowanie rozmieszczenia zawartości za pomocą paneli    1010
    Pozycjonowanie zawartości za pomocą paneli Canvas    1012
    Pozycjonowanie zawartości za pomocą paneli WrapPanel    1013
    Pozycjonowanie zawartości za pomocą paneli StackPanel    1015
    Pozycjonowanie zawartości za pomocą paneli Grid    1016
    Siatki z typami GridSplitter    1017
    Pozycjonowanie zawartości za pomocą paneli DockPanel    1018
    Włączanie przewijania dla typów Panel    1019
    Konfigurowanie paneli w projektantach Visual Studio    1020
  Tworzenie ramki okna za pomocą zagnieżdżonych paneli    1023
    Tworzenie systemu menu    1024
    Tworzenie menu w trybie graficznym    1025
    Tworzenie paska narzędzi    1027
    Tworzenie paska stanu    1027
    Wykończenie projektu interfejsu użytkownika    1027
    Implementacja obsługi zdarzeń MouseEnter/MouseLeave    1028
    Implementacja kodu do sprawdzania pisowni    1029
  Omówienie poleceń WPF    1030
    Wbudowane obiekty Command    1030
    Łączenie poleceń z właściwością Command    1031
    Łączenie poleceń z arbitralnymi działaniami    1032
    Używanie poleceń Open i Save    1034
  Zdarzenia trasowane    1036
    Wstępujące zdarzenia trasowane    1037
    Kontynuowanie lub zatrzymywanie wstępowania    1037
    Zstępujące zdarzenia trasowane    1038
  API i kontrolki WPF pod lupą    1040
    Używanie typu TabControl    1040
  Tworzenie karty Ink API    1041
    Projektowanie paska narzędzi    1043
    Kontrolka RadioButton    1045
    Obsługa zdarzeń na karcie API Ink    1046
    Kontrolka InkCanvas    1046
    Kontrolka ComboBox    1049
    Zapisywanie, wczytywanie i sprzątanie danych InkCanvas    1050
  Wprowadzenie do API Documents    1051
    Elementy blokowe i elementy wierszowe    1052
    Menedżery rozplanowania dokumentu    1052
  Tworzenie karty Documents    1053
    Wypełnianie FlowDocument za pomocą kodu    1054
    Włączanie adnotacji i przyklejanych karteczek    1055
    Zapisywanie i wczytywanie FlowDocument    1057
  Wprowadzenie do modelu dowiązywania danych WPF    1058
    Tworzenie karty z dowiązywaniem danych    1059
    Określanie dowiązań danych za pomocą Visual Studio    1059
    Właściwość DataContext    1061
    Konwersja danych za pomocą IValueConverter    1062
    Określanie dowiązań danych w kodzie    1063
    Tworzenie karty DataGrid    1064
  Rola właściwości zależnych    1065
    Analiza istniejącej właściwości zależnej    1067
    Kilka ważnych faktów dotyczących osłon właściwości CLR    1069
  Tworzenie niestandardowej właściwości zależnej    1070
    Dodawanie kodu sprawdzania prawidłowości danych    1074
    Reagowanie na zmianę właściwości    1074
  Podsumowanie    1075
  Rozdział 28 Usługi przetwarzania grafiki WPF    1077
  Graficzne usługi renderowania WPF    1077
    Opcje renderowania grafiki WPF    1078
  Renderowanie danych graficznych za pomocą kształtów    1079
    Wstawianie prostokątów, elips i linii na płótno    1081
    Usuwanie prostokątów, elips i linii z płótna    1083
    Używanie klas Polyline i Polygon    1085
    Używanie klasy Path    1085
  Pędzle i pióra WPF    1088
    Konfiguracja pędzli w Visual Studio    1089
    Konfiguracja pędzli w kodzie    1091
    Konfiguracja piór    1092
  Stosowanie przekształceń graficznych    1092
    Pierwsze spojrzenie na przekształcenia    1093
    Przekształcanie danych na płótnie    1094
  Używanie edytora przekształceń w Visual Studio    1096
    Tworzenie początkowego rozmieszczenia    1096
    Stosowanie przekształceń w fazie projektowania    1098
    Przekształcanie płótna w kodzie    1099
  Renderowanie danych graficznych za pomocą rysunków i geometrii    1100
    Tworzenie obiektów DrawingBrush za pomocą geometrii    1101
    Malowanie z użyciem DrawingBrush    1102
    Zawieranie typów Drawing w DrawingImage    1103
  Używanie obrazów wektorowych    1103
    Konwersja przykładowego pliku z grafiką wektorową na XAML    1104
    Importowanie danych graficznych do projektu WPF    1106
    Komunikacja ze znakiem    1106
  Renderowanie danych graficznych za pomocą warstwy wizualizacji    1108
    Bazowa klasa Visual i jej klasy potomne    1108
    Pierwsze kroki w używaniu klasy DrawingVisual    1109
    Renderowanie danych wizualnych w niestandardowym menedżerze rozplanowania    1111
    Odpowiadanie na testowanie trafień    1113
  Podsumowanie    1114
  Rozdział 29 Zasoby, animacje, style i szablony WPF    1115
  System zasobów WPF    1115
    Używanie zasobów binarnych    1115
  Używanie zasobów obiektowych (logicznych)    1120
    Właściwość Resources    1121
    Definiowanie zasobów dla całego okna    1121
    Rozszerzenie {StaticResource}    1124
    Rozszerzenie {DynamicResource}    1125
    Zasoby dla całej aplikacji    1125
    Definiowanie łączonych słowników zasobów    1126
    Definiowanie pakietu zawierającego wyłącznie zasoby    1128
  Usługi animacji WPF    1130
    Rola klas z rodziny Animation    1130
    Właściwości To, From i By    1131
    Rola klasy bazowej Timeline    1131
    Tworzenie animacji w kodzie C#    1132
    Kontrolowanie tempa animacji    1133
    Odtwarzanie animacji od tyłu i zapętlanie    1134
  Tworzenie animacji w XAML    1135
    Rola scenopisów    1136
    Rola wyzwalaczy zdarzeń    1136
    Animacja z użyciem nieciągłych ramek kluczowych    1137
  Rola stylów WPF    1138
    Definiowanie i stosowanie stylu    1138
    Nadpisywanie ustawień stylu    1139
    Ograniczanie stosowania stylu za pomocą TargetType    1139
    Automatycznie stosowanie stylu za pomocą TargetType    1140
    Wyprowadzanie podklas z istniejących stylów    1141
    Definiowanie stylów za pomocą wyzwalaczy    1141
    Definiowanie stylów z wieloma wyzwalaczami    1142
    Style animowane    1143
    Przypisywanie stylów programistycznie    1143
  Drzewa logiczne, drzewa wizualne i szablony domyślne    1144
    Analiza drzewa logicznego w kodzie programu    1145
    Analiza drzewa wizualnego w kodzie programu    1147
    Analiza domyślnego szablonu kontrolki w kodzie programu    1148
  Tworzenie szablonu kontrolki za pomocą platformy wyzwalaczy    1151
    Szablony jako zasoby    1152
    Wstawianie wizualnych wskazówek za pomocą wyzwalaczy    1154
    Rola rozszerzenia {TemplateBinding}    1155
    Klasa ContentPresenter    1156
    Wstawianie szablonów do stylów    1157
  Podsumowanie    1158
  Rozdział 30 Powiadomienia, polecenia, sprawdzanie prawidłowości danych i MVVM    1159
  Wprowadzenie do wzorca MVVM (Model-View-ViewModel)    1160
    Model    1160
    View    1160
    ViewModel    1160
    Anemic Model czy Anemic ViewModel    1160
  System dowiązywania powiadomień WPF    1161
    Obserwowane modele i kolekcje    1161
    Dodawanie dowiązań i danych    1163
    Zmienianie danych samochodu w kodzie programu    1164
    Obserwowane modele    1165
    Obserwowane kolekcje    1168
  Walidacja    1176
    Modyfikacja przykładu na potrzeby walidacji    1176
    Klasa Validation    1178
    Opcje walidacji    1178
  Używanie adnotacji danych    1190
    Dodawanie adnotacji    1190
    Sprawdzanie błędów walidacyjnych na podstawie adnotacji    1191
    Dostosowywanie ErrorTemplate    1193
  Tworzenie niestandardowych poleceń    1194
    Implementowanie interfejsu ICommand    1194
    Modyfikacja pliku MainWindow.xaml.cs    1195
    Modyfikacja pliku MainWindow.xaml    1196
    Załączanie polecenia do CommandManager    1196
    Testowanie aplikacji    1197
    Dodawanie pozostałych poleceń    1198
  Pełna implementacja MVVM    1200
    Usuwanie źródła danych z widoku    1200
    Przenoszenie poleceń do klasy ViewModel    1201
  Modyfikacja AutoLotDAL pod kątem MVVM    1202
    Modyfikacja modeli AutoLotDAL    1202
  Pełny przykład MVVM    1204
    Używanie ObjectMaterialized z Entity Framework    1206
  Podsumowanie    1206
  Część VIII ASP.NET    1207
  Rozdział 31 Wprowadzenie do ASP.NET Web Forms    1209
  Rola HTTP    1209
    Cykl żądania/odpowiedzi HTTP    1209
    HTTP to protokół bezstanowy    1210
  Aplikacje internetowe i serwery www    1210
    Rola wirtualnych katalogów IIS    1211
    IIS Express    1211
  Rola HTML    1212
    Struktura dokumentu HTML    1212
    Rola formularza HTML    1213
    Narzędzia do projektowania HTML w Visual Studio    1214
    Tworzenie formularza HTML    1216
  Rola skryptów po stronie klienta    1217
    Przykładowy skrypt po stronie klienta    1218
  Odesłania na serwer www    1219
    Odesłania w Web Forms    1220
  Przegląd API Web Forms    1220
    Najważniejsze funkcje Web Forms 2.0 i wyższych wersji    1222
    Najważniejsze funkcje Web Forms 3.5 (i NET 3.5 SP1) i wyższych wersji    1222
    Najważniejsze funkcje Web Forms 4.0    1223
    Najważniejsze funkcje Web Forms 4.5 i 4.6    1223
  Tworzenie jednoplikowej internetowej aplikacji Web Forms    1224
    Odwołanie do AutoLotDAL.dll    1226
    Projektowanie interfejsu użytkownika    1227
    Dodawanie kodu dostępu do danych    1228
    Dyrektywy ASP.NET    1230
    Analiza bloku ze „skryptem”    1231
    Analiza deklaracji kontrolek ASP.NET    1231
  Tworzenie internetowej strony ASP.NET za pomocą plików z kodem    1232
    Odwołanie do projektu AutoLotDAL    1233
    Modyfikacja pliku z kodem    1234
    Debugowanie i śledzenie stron ASP.NET    1235
  Witryny i aplikacje internetowe ASP.NET    1236
    Włączanie C# 6 dla internetowych witryn ASP.NET    1237
  Struktura katalogów witryny internetowej ASP.NET    1237
    Odwołania do pakietów    1238
    Rola folderu App_Code    1238
  Łańcuch dziedziczenia typu Page    1239
  Komunikacja z wchodzącym żądaniem HTTP    1240
    Uzyskiwanie statystyk przeglądarki    1241
    Dostęp do przychodzących danych z formularza    1243
    Właściwość IsPostBack    1244
  Komunikacja z wychodzącą odpowiedzią HTTP    1244
    Wysyłanie zawartości HTML    1245
    Przekierowywanie użytkowników    1245
  Cykl życiowy internetowej strony ASP.NET    1246
    Rola atrybutu AutoEventWireup    1247
    Zdarzenie Error    1248
  Rola pliku Web.config    1249
    Program narzędziowy do zarządzania internetową witryną ASP.NET    1250
  Podsumowanie    1250
  Rozdział 32 Kontrolki internetowe, strony wzorcowe i motywy ASP.NET    1251
  Omówienie roli kontrolek internetowych    1251
    Obsługa zdarzeń po stronie serwera    1252
    Właściwość AutoPostBack    1252
  Bazowe klasy Control i WebControl    1253
    Wyliczanie zawieranych kontrolek    1254
    Dynamiczne dodawanie i usuwanie kontrolek    1256
    Komunikacja z utworzonymi dynamicznie kontrolkami    1257
    Funkcjonalność bazowej klasy WebControl    1258
  Najważniejsze kategorie kontrolek Web Forms    1258
    Kilka słów na temat System.Web.UI.HtmlControls    1261
    Dokumentacja kontrolek www    1261
  Tworzenie internetowej witryny Web Forms o nazwie Cars    1262
    Używanie stron wzorcowych Web Forms    1262
    Konfiguracja nawigacji po witrynie za pomocą kontrolki TreeView    1264
    Nawigacja okruszkowa z wykorzystaniem typu SiteMapPath    1267
    Konfiguracja kontrolki AdRotator    1267
    Definiowanie niestandardowej strony z zawartością    1268
    Projektowanie strony z zawartością Inventory    1270
    Dodawanie AutoLotDAL i Entity Framework do AspNetCarsSite    1270
    Wypełnianie kontrolki GridView danymi    1270
    Włączanie edycji na miejscu    1272
    Włączanie sortowania i stronicowania    1274
    Włączanie filtrowania    1274
    Projektowanie strony z zawartością Build-a-Car    1276
  Rola kontrolek walidacyjnych    1278
    Włączanie obsługi walidacji JavaScript po stronie klienta    1280
    Kontrolka RequiredFieldValidator    1280
    Kontrolka RegularExpressionValidator    1280
    Kontrolka RangeValidator    1281
    Kontrolka CompareValidator    1281
    Tworzenie podsumowania walidacji    1282
    Definiowanie grup walidacji    1283
    Walidacja z adnotacjami danych    1284
  Używanie motywów    1289
    Omówienie plików * skin    1289
    Stosowanie motywów na całą witrynę    1291
    Stosowanie motywów na poziomie strony    1292
    Właściwość SkinID    1292
    Przypisywanie motywów programistycznie    1292
  Podsumowanie    1294
  Rozdział 33 Techniki zarządzania stanem ASP.NET    1295
  Kwestia stanu    1295
  Techniki zarządzania stanem ASP.NET    1297
  Rola stanu widoku ASP.NET    1298
    Przykład ze stanem widoku    1298
    Dodawanie niestandardowych danych stanu widoku    1299
  Znaczenie pliku Global asax    1300
    Globalna procedura ostatniej szansy obsługi wyjątku    1302
    Bazowa klasa HttpApplication    1302
  Różnica między aplikacją i sesją    1302
    Zarządzanie danymi o stanie na poziomie aplikacji    1303
    Modyfikowanie danych aplikacji    1305
    Obsługa zamykania aplikacji internetowej    1306
  Używanie bufora aplikacji    1307
    Przykład z buforowaniem danych    1307
    Modyfikowanie pliku * aspx    1309
  Zarządzanie danymi sesji    1311
    Dodatkowe składowe HttpSessionState    1314
  Omówienie plików cookie    1315
    Tworzenie plików cookie    1315
    Wczytywanie wejściowych danych cookie    1316
  Rola elementu    1317
    Zapisywanie danych sesji w serwerze stanu sesji ASP.NET    1317
    Zapisywanie danych sesji w dedykowanej bazie danych    1318
  Wprowadzenie do API ASP.NET Profile    1319
    Baza danych ASPNETDB mdf    1319
    Definiowanie profilu użytkownika w pliku web config    1320
    Programistyczny dostęp do danych profilu    1321
    Grupowanie danych profili i utrwalanie obiektów niestandardowych    1323
  Podsumowanie    1325
  Rozdział 34 ASP.NET MVC i API Web    1327
  Wprowadzenie do wzorca MVC    1327
    Model    1327
    Widok    1328
    Kontroler    1328
    Dlaczego MVC?    1328
    Pojawia się ASP.NET MVC    1329
  Tworzenie pierwszej aplikacji ASP.NET MVC    1329
    Kreator nowego projektu    1329
    Komponenty bazowego projektu MVC    1332
    Aktualizacja pakietów NuGet do bieżących wersji    1337
    Testowanie witryny    1337
  Trasowanie    1339
    Wzorce URL    1339
    Tworzenie tras dla stron Contact i About    1340
    Przekierowywanie użytkowników za pomocą trasowania    1340
  Dodawanie AutoLotDAL    1341
  Kontrolery i akcje    1342
    Dodawanie kontrolera Inventory    1342
    Omówienie „rusztowań” widoków    1344
    Kontrolery MVC    1345
  Widoki MVC    1353
    Silnik widoków Razor    1353
    Rozmieszczenia    1355
    Widoki częściowe    1357
    Wysyłanie danych do widoku    1358
    Widok Index    1359
    Widok Details    1362
    Widok Create    1363
    Widok Delete    1365
    Widok Edit    1367
    Walidacja    1368
    Wykańczanie interfejsu użytkownika    1370
    Ostatnie słowo na temat ASP.NET MVC    1372
  Wprowadzenie do API ASP.NET Web    1373
    Dodawanie projektu API Web    1373
    Analiza projektu API Web    1375
    Konfiguracja projektu    1375
    Słowo na temat JSON    1376
    Dodawanie kontrolera    1377
    Modyfikacja CarLotMVC, aby używać CarLotWebAPI    1383
  Podsumowanie    1389
  Indeks    1391
RozwińZwiń
W celu zapewnienia wysokiej jakości świadczonych przez nas usług, nasz portal internetowy wykorzystuje informacje przechowywane w przeglądarce internetowej w formie tzw. „cookies”. Poruszając się po naszej stronie internetowej wyrażasz zgodę na wykorzystywanie przez nas „cookies”. Informacje o przechowywaniu „cookies”, warunkach ich przechowywania i uzyskiwania dostępu do nich znajdują się w Regulaminie.

Nie pokazuj więcej tego powiadomienia