MENU

Język C# 6.0 i platforma .NET 4.6

(eBook)
5.00  [ 2 oceny ]
 Dodaj recenzję
Rozwiń szczegóły »
  • Druk: Warszawa, 2017

  • Autor: Andrew Troelsen, Phiplip Japikse

  • Wydawca: Wydawnictwo Naukowe PWN

  • Formaty:
    mobi
    ePub
    (Watermark)
    Watermark
    Znak wodny czyli Watermark to zaszyfrowana informacja o użytkowniku, który zakupił produkt. Dzięki temu łatwo jest zidentyfikować użytkownika, który rozpowszechnił produkt w sposób niezgodny z prawem. Ten rodzaj zabezpieczenia jest zdecydowanie najbardziej przyjazny dla użytkownika, ponieważ aby otworzyć książkę zabezpieczoną Watermarkiem nie jest potrzebne konto Adobe ID oraz autoryzacja urządzenia.

Produkt niedostępny
Dodaj do schowka

Język C# 6.0 i platforma .NET 4.6

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]).

  • Sposób dostarczenia produktu elektronicznego
    Produkty elektroniczne takie jak Ebooki czy Audiobooki są udostępniane online po opłaceniu zamówienia kartą lub przelewem na stronie Twoje konto > Biblioteka.
    Pliki można pobrać zazwyczaj w ciągu kilku-kilkunastu minut po uzyskaniu poprawnej autoryzacji płatności, choć w przypadku niektórych publikacji elektronicznych czas oczekiwania może być nieco dłuższy.
    Sprzedaż terytorialna towarów elektronicznych jest regulowana wyłącznie ograniczeniami terytorialnymi licencji konkretnych produktów.
  • Ważne informacje techniczne
    Minimalne wymagania sprzętowe:
    procesor: architektura x86 1GHz lub odpowiedniki w pozostałych architekturach
    Pamięć operacyjna: 512MB
    Monitor i karta graficzna: zgodny ze standardem XGA, minimalna rozdzielczość 1024x768 16bit
    Dysk twardy: dowolny obsługujący system operacyjny z minimalnie 100MB wolnego miejsca
    Mysz lub inny manipulator + klawiatura
    Karta sieciowa/modem: umożliwiająca dostęp do sieci Internet z prędkością 512kb/s
    Minimalne wymagania oprogramowania:
    System Operacyjny: System MS Windows 95 i wyżej, Linux z X.ORG, MacOS 9 lub wyżej, najnowsze systemy mobilne: Android, iPhone, SymbianOS, Windows Mobile
    Przeglądarka internetowa: Internet Explorer 7 lub wyżej, Opera 9 i wyżej, FireFox 2 i wyżej, Chrome 1.0 i wyżej, Safari 5
    Przeglądarka z obsługą ciasteczek i włączoną obsługą JavaScript
    Zalecany plugin Flash Player w wersji 10.0 lub wyżej.
    Informacja o formatach plików:
    • PDF - format polecany do czytania na laptopach oraz komputerach stacjonarnych.
    • EPUB - format pliku, który umożliwia czytanie książek elektronicznych na urządzeniach z mniejszymi ekranami (np. e-czytnik lub smartfon), dając możliwość dopasowania tekstu do wielkości urządzenia i preferencji użytkownika.
    • MOBI - format zapisu firmy Mobipocket, który można pobrać na dowolne urządzenie elektroniczne (np.e-czytnik Kindle) z zainstalowanym programem (np. MobiPocket Reader) pozwalającym czytać pliki MOBI.
    • Audiobooki w formacie MP3 - format pliku, przeznaczony do odsłuchu nagrań audio.
    Rodzaje zabezpieczeń plików:
    • Watermark - (znak wodny) to zaszyfrowana informacja o użytkowniku, który zakupił produkt. Dzięki temu łatwo jest zidentyfikować użytkownika, który rozpowszechnił produkt w sposób niezgodny z prawem. Ten rodzaj zabezpieczenia jest zdecydowanie bardziej przyjazny dla użytkownika, ponieważ aby otworzyć książkę zabezpieczoną Watermarkiem nie jest potrzebne konto Adobe ID oraz autoryzacja urządzenia.
    • Brak zabezpieczenia - część oferowanych w naszym sklepie plików nie posiada zabezpieczeń. Zazwyczaj tego typu pliki można pobierać ograniczoną ilość razy, określaną przez dostawcę publikacji elektronicznych. W przypadku zbyt dużej ilości pobrań plików na stronie WWW pojawia się stosowny komunikat.
Ogólny spis treści V

Spis treści VII

O autorach XXXV

O recenzencie technicznym XXXVII

Podziękowania XXXIX

Wprowadzenie XLI

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
Dodawanie funkcjonalności bezpołączeniowej do pakietu
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
NAZWA I FORMAT
OPIS
ROZMIAR

Przeczytaj fragment

NAZWA I FORMAT
OPIS
ROZMIAR
(mobi)
Brak informacji
(epub)
Brak informacji
Słowa kluczowe: C#

Inni Klienci oglądali również

24,32 zł
32,00 zł

Język angielski Słownictwo Tematyczny zbiór ćwiczeń 2

Dwuczęściowy zestaw ćwiczeń wspomagający naukę i poszerzenie znajomości słownictwa angielskiego z wielu zakresów tematycznych. Książka oferuje obszerny wybór zagadnień oraz praktycznych i inspirujących ćwiczeń, ułatwiających utrwalenie le...
14,36 zł
16,70 zł

Język poetycki Mariny Cwietajewej

Autorka prezentuje twórczość Mariny Cwietajewej przez pryzmat języka, obszernie omawia różne aspekty jej poezji: sposoby powstawania językowego obrazu świata, drogi kreowania oryginalnego świata poetyckiego za pośrednictwem środków...
30,60 zł
34,00 zł

Etykieta biznesu, czyli międzynarodowy język kurtuazji

* Wydanie drugie, poprawione i uzupełnione *„W biznesie nie ma mężczyzn i kobiet. Są partnerzy, którzy powinni grać według tych samych zasad. Książka Ireny Kamińskiej-Radomskiej Etykieta biznesu jest instrukcją do równej...
16,72 zł
22,00 zł

Język angielski - Ilustrowany Słowniczek Tematyczny

UWAGA! Pliki są w formacie PDF i nie można ich edytować, a jedynie drukować.Słowniczek adresowany jesy do uczniów szkół podstawowych oraz osób, które dopiero rozpoczynają przygodę z językiem angielskim. Sło...
3,75 zł
7,50 zł

Język niemiecki. Gramatyka

Obszerne, najnowsze opracowanie gramatyki języka niemieckiego. Znajdziesz tu wyjaśnienia i komentarze do zagadnień gramatycznych oraz liczne przykłady. Książka przeznaczona dla uczniów, studentów oraz osób samodzielnie uczących się...
26,88 zł
32,00 zł

Klasyczny język mongolski

Klasyczny język mongolski, który wykształcił się na przełomie XII/XIII w., należy wraz z innymi odmianami mongolskiego oraz językami tungusko-mandżurskimi do tzw. ligi ałtajskiej. Używany jest tylko w piśmiennictwie oficjalnym w Mongolii Wewnętr...
10,50 zł
12,50 zł

Język Angielski Dla Opiekunek oraz Przedszkolanek

Chcesz pracować jako opiekunka lub przedszkolanka w krajach anglojęzycznych? Zatem ta książka to Twój niezbędnik. Zawiera ona nie tylko fachowe słownictwo związane z opieką nad dzieckiem, ale także szerokie spektrum formuł konwersacyjnych, kt...
17,48 zł
23,00 zł

Język angielski Powtórka przed egzaminem Zbiór testów na poziomie egzaminu FCE

Książka jest zbiorem testów złożonych z ćwiczeń, które umożliwiają powtórkę materiału gramatycznego oraz leksykalnego na poziomie egzaminu FCE (First Certificate Examination). Może ona stanowić pomoc dydaktyczną dla osób prz...
28,42 zł
31,58 zł

Mój język prywatny

Profesor Bralczyk kocha język jako zjawisko samo w sobie. A skoro go kocha, kocha się nim posługiwać i uczyć innych posługiwania się nim. Bo wbrew pozorom nie jest to sprawa prosta: czy zawsze wiemy, jak zmienia się znaczenie najprostszego, nawet cz...

Recenzje

Nikt nie dodał jeszcze recenzji. Bądź pierwszy!