23
Dirk Louis, Shinja Strasser, Thorsten Kansy Microsoft Visual C# 2010 - Das Entwicklerbuch Microsoft Press

Microsoft Visual C# 2010 - Das Entwicklerbuch · PDF fileInhaltsverzeichnis . 7 Imperative Programmierung in C# 112 Daten und Datentypen 112 Literale und Variablen 112 Operatoren und

Embed Size (px)

Citation preview

Dirk Louis, Shinja Strasser, Thorsten Kansy

MicrosoftVisual C# 2010 -Das Entwicklerbuch

MicrosoftPress

InhaltsverzeichnisEinleitung 27

Zielgruppe 28Aufbau des Buchs 28Die Beispielsammlung zu diesem Buch 29Die Visual Studio 2010-Edition auf der beiliegenden Buch-DVD 29Korrekturen und Kommentare 30

Teil A - Einführung in .NET 4.0 und Visual C# 2010 31

1 Das .NET Framework 33Historie 34Bausteine des .NET Framework 35

Common Language Infrastructure 35Common Language Runtime 35Common Intermediate Language 36Just-In-Time-Compiler 37

Assemblys 38Ausführungsmodell für Assemblys 40

2 Visual Studio 2010 und Visual C# 2010 43Visual Studio 44

Geschichte 44Visual Studio 2010, .NET Framework 4.0 und C# 4.0 45Arbeiten in der Entwicklungsumgebung 45

Die Projektverwaltung 52Übersicht 52Projektmappen 53Stertprojekte, Verweise und Projektabhängigkeiten 57Eigene Projektvorlagen 59

Der Code-Editor 59Kleine Annehmlichkeiten 60IntelliSense 61using-Smarttag 63Umschließung 64Codeausschnitte 64Umgestaltung 66

Inhaltsverzeichnis

Erstellung 68MSBuild 68Build-Konfigurationen 69

Konfiguration 70Umgebungseinstellungen 70Extras/Optionen 70Externe Tools einrichten 72

Fensterverwaltung 73Die Andock-Hilfe 73Die Pin-Nadel 74Der IDE-Navigator 74

Navigation 75Suchen 75Zur Definition wechseln 77Klassenansicht und Objektkatalog 77Aufrufhierarchie 77

Hilfe 78Übersicht 78Lokal oder Online 79Die Online-Hilfe 80Die lokale Hilfe 82

3 Die ersten Programme 85Konsolenanwendungen 86Windows Forms-Anwendungen 89

4 Stilkonventionen 93Bezeichner 94Konventionen 95Blöcke 97

Teil B - C#-Grundlagen 99

5 Anatomie eines C#-Programms 101Programmaufbau 102

Klassen 103Eintrittspunkt Main() 104

using-Direktive und Framework-Klassen 106Ein- und Ausgabe 106Kommentare 108

Dateien und Assemblys 109Klassen und Dateien 109Dateien und Assemblys 110

Inhaltsverzeichnis . 7

Imperative Programmierung in C# 112Daten und Datentypen 112Literale und Variablen 112Operatoren und Ausdrücke 113Anweisungen 113Funktionen (Methoden) 115

Objektorientierte Programmierung in C# 116Wie sind OOP-Objekte beschaffen? 117Objekte und Klassen 118Die Klasse als Zentrum der objektorientierten Programmierung 121Konzepte, die auf der Klasse aufbauen 125Die Klasse als Funktionensammlung 130

6 Variablen, Daten und Typen 131Das C#-Datenmodell 132

Datenrepräsentation 132Typisierung 132Wert- und Verweistypen 133Erweiterbarkeit 136

Literale 136Variablen 139

Definition 139Initialisierung 140Eindeutige Zuweisung 141Gültigkeitsbereiche 142

Konstanten 142Typen: Primitive Typen 143

Derbool-Typ 144Ganzzahlige Typen 145Gleitkommatypen 147Zeichen 149Der decimal-Typ 150

Typen: Definierbare Typen 150Typen: Strings 152Typumwandlung und Boxing 153

Implizite Typumwandlungen 153Explizite Typumwandlungen 154Boxing und Unboxing 155

7 Operatoren und Ausdrücke 157Operatoren und Ausdrücke 158

Klassifizierung nach Operanden 158Ausdrücke 159

Inhaltsverzeichnis

Auswertungsreihenfolge 159Vorrang der Operatoren 160Assoziativität der Operatoren 161Operanden 162Klammerung 162

Nebeneffekte und andere Fallstricke 162Die arithmetischen Operatoren 165

Division und Modulo 165Inkrement und Dekrement 166

Die Zuweisungsoperatoren 167Die relationalen Operatoren 168Die logischen Operatoren 169Die Bit-Operatoren 172Die Operatoren für die Typidentifizierung und -Umwandlung 175

Typidentifizierung 175Typumwandlung 177

Sonstige Operatoren 178Datenzugriff 178

checked und unchecked 179Der new-Operator 179Der Bedingungsoperator ?: 179Der ??-Operator 180Operatoren für nicht gesicherten Code 180

8 Ablaufsteuerung 181Verzweigungen 182

Die einfache if-Anweisung 182Die if...eise-Verzweigung 184iL.else-Ketten und -Verschachtelungen 185Die switch-Verzweigung 187

Schleifen 190Die while-Schleife 191Die do...while-Schleife 193Die for-Schleife 195Die foreach-Schleife für Arrays und Auflistungen 196

Sprunganweisungen 197Die continue-An Weisung 198Die break-Anweisung 198Die goto-Anweisung 199

9 Arrays, Enumerationen und Strukturen 201Arrays 202

Definition und Erzeugung 202Initialisierungslisten 205

Inhaltsverzeichnis .

System. Array 205Mehrdimensionale Arrays 214Arrays von Arrays 218

Enumerationen 220Definition 220Verwendung 221Enumerationen und switch 222Die Klasse System.Enum 223

Strukturen 224Definition 224Verwendung 225Unterschiede zwischen Strukturen und Klassen 226

Teil C - Objektorientierte Programmierung in C# 227

10 Klassen 229Die Klassendefinition 230

Zugriff auf Klasse steuern 231Zugriff auf Member steuern 231Spezielle Klassen 233Partielle Klassen 234

Konstanten 235Felder 236

Definition 236Instanzfelder 237Statische Felder 238

Methoden 242Allgemeines 242Instanzmethoden und this 245Statische Methoden 247Datenaustausch 248Rekursion 256Überladung 257

Eigenschaften 260Konstruktoren 264

Klassen ohne selbst definierten Konstruktor 266Der Standardkonstruktor 266Überladene Konstruktoren 266Statische Konstruktoren 267

Destruktoren 269Aufruf 269Eigener Destruktor 270

Verschachtelte Typdefinitionen 272

10 Inhaltsverzeichnis

11 Schnittstellen 275Vertragsbasierte Programmierung 276

Modell 1: schnittstellengestützte Methoden 277Modell 2: Schnittstellen als Labels für Klassen 278

Schnittstellen definieren 279Schnittstellen-Member 280Schnittstellenvererbung 280

Schnittstellen implementieren 281Die Dokumentation ist wichtig (IComparable-Beispiel) 282Schnittstellen-Member verbergen 284

Namenskonflikte in Schnittstellen lösen 286

12 Vererbung, Polymorphie und Klassen-Design 289Vererbung 290

Das Prinzip der Vererbung 290Geerbte Member 294Die oberste Basisklasse Object 304Vererbung über Assembly- und Sprachgrenzen hinweg 305

Polymorphie 309Grundprinzip und Implementierung 309Dynamische und statische Bindung 312Generische Programmierung 319Typidentifizierung zur Laufzeit 324Abstrakte Klassen 326

Der Klassen-Designer 328Klassendiagramme erzeugen 328Klassendiagramme bearbeiten 329Projektdokumentationen erstellen 332Analysespezifikationen umsetzen 332Projekte pflegen 333

13 Indexer, Enumeratoren und Iteratoren 335Indexer 336

Syntax 336Beispiel 337

Enumeratoren 338Funktionsweise 339Implementierung 340

Iteratoren 345foreach-Unterstützung durch Iteratoren 345Klassen mit mehreren (benannten) Iteratoren 347Eigene Lösungen, die auf IEnumerable basieren 348

Inhaltsverzeichnis . . .11

14 Operatorenüberladung 351Syntax 352Regeln 353

Überladbare Operatoren 353Regeln für die Überladung 354

Fallbeispiel: Unäre Inkrement- und Dekrement-Operatoren 355Fallbeispiel: Binäre mathematische Operatoren 355Fallbeispiel: Relationale Operatoren 357Fallbeispiel: Konvertierungsoperatoren 359Fallbeispiel: true und false 360

15 Ausnahmebehandlung 361Konzeption und Zielsetzung 362

Kein Weg zurück 364Behandeln von Ausnahmen 364

Das try...catch-Grundgerüst 365Ausnahmen abfangen 365Mehrere catch-Handler 367Ausnahmen als Informationsträger 369

Die finally-Klausel 369finally-Block 369using-Anweisung 371Ausnahmen auslösen 372

Ausnahmen weiterleiten 372Innere Ausnahmen 372

Die vordefinierten Ausnahmeklassen 373Member der Klasse Exception 374CLR-generierte Ausnahmen 375

Eigene Ausnahmeklassen schreiben 376

Teil D - Fortgeschrittenes C# 379

16 Werttypen und Verweistypen 381Zwischen C++ und Smalltalk 382

Das Wertemodell 382Das Verweismodell 383Umsetzung in C++ und Smalltalk 383

DerC#-Weg 384Speicherreservierung und Lebensdauer 385Objekte kopieren 393Objekte vergleichen 399Boxing und Unboxing 409Wert- und Referenzparameter 410

Inhaltsverzeichnis

Nullfähigkeit 411Nullable<T> 412

Zusammenfassung 413

17 Namespaces, Gültigkeitsbereiche und Zugriffsschutz 415Namespaces 416

Namespaces definieren 416Namespaces erweitern 417Typen aus Namespaces verwenden 418using-Direktive 418using-Aliase 420Konfliktlösung mit Namespaces 422

Gültigkeitsbereiche 423Übersicht 423Verdeckung 423Auflösung der Verdeckung 424

Zugriffsmodifizierer im Überblick 425

18 Delegaten und Ereignisse 427Delegaten 428

Definition 428Instanziierung 429Aufruf 432Delegaten als Methoden-Hooks 432Delegaten mit Aufruflisten 434

Ereignisse 436Das Prinzip 436Ereignisse veröffentlichen 437Ereignisse abonnieren 440Ereignis-Argumente 441

19 Attribute 445Vordefinierte Attribute 446Benutzerdefinierte Attribute 448

Benutzerdefinierte Attribut-Klasse erstellen 448Komponente erstellen, die mit der Attribut-Klasse arbeitet 449Attribut-Klasse verwenden 451

20 C#-Generika 453Einführung in Generika 454Generische Typen 458

Generische Klassen 459Generische Strukturen 462

Inhaltsverzeichnis 13

Generische Schnittstellen 462Generische Delegaten und Prädikate 463Kovarianz und Kontravarianz 465

Generische Methoden 467Aufruf 467Swap 468

Einschränkungen für Typparameter 469Ungebundene Typen 469Einschränkungen 470Vererbung 473

Null, default und die Problematik der Werttypen 473Das Problem der Standardwerte 474Das Problem der Leere 475

Ein Blick hinter die Kulissen 477Typisierung mit Werttypen 478Typisierung mit Verweistypen 479

21 XML-basierte Dokumentierung 481Einführung 482XML-Dokumentationskommentare 483

Die empfohlenen Tags 484Eigene Tags definieren 487Beispiele 487

XML-Dokument erzeugen 490Lesbare Dokumentationsseiten 490

Transformation mit ndoc 490Transformation mit eigenem XSLT-Code 490

Teil E - Wichtige .NET-Klassen 499

22 Strings und reguläre Ausdrücke 501String-Erzeugung 502String-Llterale 503

Escapesequenzen 503@-Literale 503Zeilenumbrüche 504Pooling 504

String-Vergleiche 505Test auf Nutzinhalt 505Gleichheit und Ungleichheit 506Größenvergleiche 506Kulturunabhängige Größenvergleiche 508

. .. Inhaltsverzeichnis

String-Manipulationen 508Aneinanderreihung 508Einfügen, Löschen, Ersetzen 511Suchen 512Zerlegen und Zusammenfügen 513Trimmen und auffüllen (Padding) 515Umwandeln 516Auf einzelne Zeichen zugreifen 517Kopieren 518

Formatierung mit Platzhaltern 518ToStringO, IFormattable und die Formatbezeichner 518

IFormattable 518String.FormatO und die kombinierte Formatierung 523

Eigene Typen mit Unterstützung für Formatbezeichner 524Eigene Formatierer mit IFormatProvider und ICustomFormatter 526

StringBuilder 529String-Manipulation 530Kapazität 532

Reguläre Ausdrücke 532Syntax regulärer Ausdrücke 532Suchen mit Regex und Match 536Ersetzen mit Regex 538

23 Streams, Dateien und Serialisierung 541Reader und Writer 542Verzeichnisse 544

Auflisten von Verzeichnissen 544Anlegen und Löschen von Verzeichnissen 546Rekursives Löschen von Dateien und Verzeichnissen 547Verschieben von Verzeichnissen 547Mit Verzeichnissen arbeiten 547Pfadangaben 549

Streams 549Dateien schreiben 550Dateien lesen 551Die File-Klasse 552MemoryStream 553NetworkStream 553BufferedStream 555CryptoStream 558DeflateStream und GZipStream 560Asynchrones Streaming 562

Inhaltsverzeichnis 15,

Serialisierung 564Formatter 564Serialisierung von persistenten und transienten Daten 565Objekte serialisieren 567Objekte deserialisieren 568

24 Auflistungen 573Grundlagen 574

Die Basis-Schnittstellen 574Die Auflistungsklassen 577

Die Qual der Wahl 577Kriterium I: Generisch oder nicht generisch 578Kriterium II: Eigenschaften 578Kriterium III: Effizienz 579Die Auflistungen im Vergleich 579

Nicht generische Auflistungen 581ArrayList 581Hashtable 583BitArray 584

Generische Auflistungen 585List 586Dictionary 588LinkedList 589Stack 591SortedSet 592

25 Datum, Mathematik und die Systemumgebung 595Datum und Uhrzeit 596

Datum und Uhrzeit abfragen 596Datum und Uhrzeit manipulieren 597Formatierung 598Zeitzonen 600Kalender 600Zeitspannen 603Laufzeitmessungen 603

Numerik 603Die Klasse Math 604Die trigonometrischen Funktionen 606Die Klasse Biginteger 606Die Klasse Complex 608

Zufallszahlen 610Zufallszahlengenerator erzeugen 611Zufallszahlen erzeugen 611

. Inhaltsverzeichnis

Systemumgebung 612Informationen zur Systemumgebung abfragen 612Umgebungsvariablen 614Externe Anwendungen ausführen 615

Teil F - Windows Forms-Anwendungen 617

26 Einführung in Windows Forms.... 619Windows Forms 620

Namespaces 620Zentrale Klassen 621

Anwendungsgerüst 622Die Visual Studio-Projektvorlage 623Anwendungsgerüst ohne Visual Studio 626Starten und beenden 627Leerlaufverarbeitung 628Assembly-Info 629

Benutzeroberfläche 630Formulare, Container und Steuerelemente 631Layout 631Ressourcen 640Windows Forms-Designer 643

Ereignisbehandlung 648Ereignisse behandeln 649Allgemeine Ereignisse 651Mausereignisse 654Tastaturereignisse 655Mehrere Ereignisse - eine Behandlungsmethode 660

27 Formulare 661Rund ums Formular 662

Konfiguration 662Ereignisbehandlung 665Formulare anzeigen und schließen 667Formulare als Hauptfenster 668Anwendungssymbol 670

Dialogfelder 672Eigene Dialogfelder 672Musterimplementierung für modale Dialoge 674Musterimplementierung für nicht-modale Dialoge 677Standard-Dialogfelder 680Meldungsfelder 681

Inhaltsverzeichnis 17

Konfiguration via Anwendungseinstellungen 682Anwendungskonfiguration aus XML-Datei 682Benutzerdefinierte Einstellungen 685

28 DVD-Kapitel: Steuerelemente 689Dieses Kapitel finden Sie als kostenlosen Zusatzinhalt auf der beiliegenden DVD.

29 Eigene Steuerelemente entwickeln 691Erweiterung bestehender Steuerelemente 692

Neue Eigenschaften hinzufügen 696In die Ereignisbehandlung eingreifen 697Steuerelemente selbst zeichnen 699

Kombination bestehender Steuerelemente 701Ableitung von Control 701Unterstützung für den Windows Forms-Designer 704

Benutzerdefinierte Steuerelemente in der Toolbox 704Benutzerdefinierte Steuerelemente im Eigenschaftenfenster 705Überflüssige, geerbte Eigenschaften und Ereignisse ausblenden 706

30 Drag & Drop, Drucken und andere weiterführende Techniken 709Dateien öffnen und speichern 710

Menübefehle 710Nicht gespeicherte Änderungen 712Die Methoden zum Anlegen, Öffnen und Speichern 713

Zwischenablage 717Die Klasse Clipboard 718Daten in die Zwischenablage einfügen 719Daten aus der Zwischenablage übernehmen 720Die vordefinierten Datenformate 721Daten in mehreren Formaten einfügen 721Aktivierung der Zwischenablagebefehle 722

Drag & Drop 723Die Drag & Drop-Quelle 724Der Drag & Drop-Vorgang 725Das Drag & Drop-Ziel 726Dateien aus dem Windows Explorer in ein Textfeld ziehen 728Drag & Drop zwischen Listenfeldern 729

Begrüßungsbildschirme 731Begrüßungsbildschirme erstellen 731Begrüßungsbildschirme anzeigen 732

MDI 733VonSDIzuMDI 734Das übergeordnete Fenster 734

.18 Inhaltsverzeichnis

Die untergeordneten Fenster 735Das Menüsystem 736

Drucken 740Einführung 741Drucken in fünf Minuten 742Druckeinstellungen und -dialoge 743Bilder drucken 751Texte drucken 753

Sound 757Die vordefinierten Signaltöne 757WAV-Dateien abspielen 758

31 GDI+ , 761Gerätekontexte und Paint 762

Das Paint-Ereignis 762Eigene Graphics-Objekte 766

Zeichenwerkzeuge und -Operationen 768Zeichenqualität einstellen 769Zeichenfläche löschen 770Text zeichnen 771Linien und andere Grafikprimitiven zeichnen 776Schriften 783Farben 791Stifte (Pen) 793Pinsel (Brush) 795

Transformationen 803Verschieben 803Drehen 804Skalieren 805Kombinierte Transformationen 806Transformationen zurücknehmen 807

Bilder 808Laden 808Anzeigen 810Speichern 816Bearbeiten 818Bitmaps 819Metadateien 823

Clipping 824Grafikprogramme 826Fraktale 828Animation und Double Buffering 830

Die Grundtechnik 830Automatisches Double Buffering 834

Inhaltsverzeichnis . . .. 1°

Die Bilderlernen laufen 835

Double Buffering mit BufferedGraphics 838

Teil G - Windows Presentation Foundation 841

32 Einführung in WPF 843Das Grundprinzip 844

Von Windows Forms zu WPF 845Die erste WPF-Anwendung 845

DerWPF-Designer 856Der Entwurf-Bereich 856Der XAML-Bereich 858Das Eigenschaftenfenster 859

DasWPF-Modell 861Eine neue Zielsetzung 861Eine neue GUI-Bibliothek 862Ein neues Grafikmodell 862Ein neues Layoutkonzept 864Ein neues Eigenschaftenkonzept 867Ein neues Ereignismodell 870Neue Ausführungsmodelle 874

33 WPF-Fenster, -Seiten und -Steuerelemente 875Fenster und Seiten 876

Fensterbasierte Anwendungen 876Browseranwendungen 880Fensterbasierte Anwendungen mit Frames und Seiten 885

Die Steuerelemente 886Die Basisklassen 887Übersicht 888

Datenbindung 896Menüs und Symbolleisten 900

Aufbau von Menüs 900Ereignisbehandlung 901Kontextmenüs 904Symbolleisten 905

Zwischenablage 906Drag & Drop 906

34 Grafik 909Grundtechniken 910Transformationen 912

20 Inhaltsverzeichnis

3D-Ansichten 912Die Benutzeroberfläche 913Die Objekte 914Die Szenerie 916Kamera verschieben 918Zoomen 918

Bilder 919Animation 922

35 XAML 925Grundlagen 926

XAML zur Laufzeit laden 927Eigene Klassen instanziieren 928Klassen definieren 929

Namespaces 930CLR-Namespaces 930XML-Namespaces 931

Elemente 931Elementinhalt 932Eigenschaften als Elemente 932

Attribute 932Typkonvertierung 933Attached-Eigenschaften 933Markuperweiterungen (Markup Extensions) 934Die Attribute (und Elemente) des XAML-Namespace 935

Ressourcen, Stile und Vorlagen 937Ressourcen definieren 937Ressourcen verwenden 938Stile 938Trigger 939Vorlagen 939

WPF-Ausführungsmodelle 940

Teil H - Multithreading 941

36 Prozesse und Anwendungsdomänen 943Prozesse 944

Die Process-Klasse 944Prozess starten 944Prozess binden 946Prozess beenden 946Prozessverhalten und -mechanismen verwalten 947

Inhaltsverzeichnis 21

Anwendungsdomäne 948Erstellen einer Anwendungsdomäne 948Ausführbare Assemblys innerhalb einer Anwendungsdomäne 949Nicht ausführbare Assemblys innerhalb einer Anwendungsdomäne 950Laden und Entladen von Assemblys in einer Anwendungsdomäne 951Daten zwischen Anwendungsdomänen austauschen 951

37 Thread-Programmierung 955Starten von Threads 956

Einfachen Thread starten 956Starten von Threads in einer anderen Anwendungsdomäne 958Hintergrundthreads 959

Arbeiten mit Threads 961Priorisieren von Threads 961Anhalten und Beenden von Threads 962

Synchronisierung 964Monitor 965Interlock 967Mutex 967

Pooling 970Timer 972

Teil I - Datenbanken 975

38 ADO.NET 977Architektur und Technologie 978

Technologie 978Architektur 979

KlasseninADO.NET 979Connection-Klasse und Pooling 979Command-Klasse 984DataReader-Klasse 993DataAdapter-und DataSet-Klasse 996

DataTable-Klasse 1005DataTableReader 1005Data View-Klasse 1005Transaktionen 1006

39 SQL Server-Programmierung 1007Programmieren von SQL Server 2008 R2 1008

Anlegen eines SQL Server-Projekts 1009Erstellen einer benutzerdefinierten Funktion 1010Erstellen einer gespeicherten Prozedur 1012

22 . Inhaltsverzeichnis

Erstellen eines Aggregats 1013Ersteüen eines Triggers 1015Erstellen eines benutzerdefinierten Typs 1017

Teil J-XML 1021

40 XML Daten 1023Allgemeines 1024

Aufbau und Terminologie eines XML-Dokuments 1024Verfügbare APIs 1025

Programmieren mit XML 1026Die Klasse XMLDocument 1026LINQtoXML 1031

41 XPath, XQuery LINQ to XML und XSLT 1033XPath und XQuery 1034

Arbeiten mit XPath 1034Arbeiten mit XQuery 1035Arbeiten mit XPath und XQuery 1035

LINQtoXML 1036XSLT 1037

XSLT-Transformation 1037

Teil K - Web Forms 1039

42 Grundlagen der Webentwicklung (ASP.NET) 1041GrundlagenvonASP.NET 1042

Ordnerstruktur 1042SeitenmodelleinASP.NET 1042Automatische Kompilierung 1044Lebenszyklus einer ASP.NET-Seite 1044

ArbeitenmitASP.NET 1045ASP.NET-Projekt erzeugen 1045Webkonfigurationsdatei 1046Debuggen von Webanwendungen 1046Website veröffentlichen 1047Website konfigurieren 1048

43 Web Forms und Steuerelemente 1051Arbeiten mit Web Forms 1052

Web Form erstellen 1052Steuerelemente platzieren 1053

Inhaltsverzeichnis 23

Arbeiten mit serverseitigen Steuerelementen 1053TextBox und Button 1053DropDownList und ListBox 1054CheckBoxList und RadioButtonList 1056CheckBox und RadioButton 1057FileUpload 1059Wizard 1059Xml-Steuerelement 1060MultiView und View 1061Sitemap, Menü undTreeView 1062Login-Steuerelemente 1063

MembershipProvider und RoleProvider 1067Validierung von Daten 1070

44 Datengebundene Steuerelemente 1075Steuerelemente an Expressions binden 1076

Ressourcendatei hinzufügen 1076Ressource binden 1077

Datenquellen an Steuerelemente binden 1077DropDownList, ListBox, CheckBoxList und RadioButtonList 1078

Deklarative Datenbindung 1079GridView-Steuerelement 1084

Deklarative Datenbindung 1086Form View und DetailsView 1089

Object Binding 1090

45 Webpartsund Layout 1095Webparts 1096

Vorbereitungen 1096WebPartManager 1096WebPartZone 1096EditorZone 1097CatalogZone 1099

Designs 1100Vorbereitung 1100Skin bzw. Designdatei erzeugen 1100Skin in die Website einbinden 1101

Teil L - Webdienste und Remoting 1103

46 XML-Webdienste 1105Architektur der XML-Webdienste 1106

24 Inhaltsverzeichnis

SOAP.XMLundWSDL 1107UDDI 1107SOAP 1107WSDL 1108Interoperabilität 1111Die Proxyklasse eines Webdienstes 1111

XML-Webdienst-Namespaces 1113Einen ASP.NET-Webdienst erstellen 1114Einen neuen Webdienst erstellen 1115

Die Basisklasse WebService 1117Das Attribut WebService 1117

Webmethodenerstellen 1118BufferResponse 1118CacheDuration 1118Description 1119EnableSession 1119MessageName 1120

Einen XML-Webdienst testen 1120Fortgeschrittene Techniken für Webdienste : 1122

Arbeiten mit dem SO AP-Header 1122Autorisieren über Principals und Permissons 1123Arbeiten mit Zertifikaten 1124Arbeiten mit komplexen Typen 1125Proxy Type Sharing.... 1127

Aufrufen und arbeiten mit Webdiensten 1127Erstellen eines Webverweises mit Visual Studio 1127Einfacher Aufruf von Webmethoden 1128Aufruf zustandsbehafteter Webmethoden 1129Aufruf von Webdiensten mit SOAP-Headern 1129Asynchroner Aufruf von Webmethoden 1130Dynamische Webdienst-URLs 1131Aufruf von Webdiensten über einen Proxyserver 1132Authentifizieren über Windows-Authentifizierung 1132

Debuggen eines XML-Webdienstes 1132Weitergeben von Webdiensten 1133

47 Remoting 1135Architektur und Technologie 1136

Channels 1136Formatter 1136Remoteobjekte 1136Proxy 1137Marshal-By-Value 1137Marshal-By-Reference 1139

Inhaltsverzeichnis 25

! Server- und Clientaktivierte Objekte 1139! Serveraktivierte Objekte 1140I Clientaktivierte Objekte 1141

Deklarative Konfiguration 1143i Objektlebensdauer 1145' Hosts 1148! Das Remoteobjekt 1148S Remoting über einen Windows-Dienst 1148

Installieren des Dienstes 1150

Die Clientanwendung des Windows-Dienstes 1152

Teil M - Spracherweiterungen und LINQ 1153

48 Spracherweiterungen von C# 4.0 1155i Dynamic 1156

Ko- und Kontravarianz 1157Optionale (oder Standard-) Parameter 1157Benannte Argumente 1158Verbesserte COM Interoperabilität 1158

49 LINQ 1161Grundlagen der LINQ-Operatoren 1162

Projektionsoperatoren 1164Restriktionsoperator 1167Sortierungsoperatoren 1168Gruppierungsoperatoren 1170Verknüpfungsoperatoren 1172Set-Operatoren 1174Aggregatsoperatoren 1178Generierungsoperatoren 1182Quantifizierungsoperatoren 1184Partitionierungsoperatoren 1185Elementoperatoren 1188

LINQ to Objects 1191LINQ to SQL 1191

Referenzen und Namespaces 1191Kommunikation mit der Datenbank 1191Entwerfen von Entitätsklassen 1192Entitätsverknüpfungen 1194Datenabfragen 1197Datenmanipulation 1203

LINQ to Entities 1208LINQ to DataSet 1210

26 Inhaltsverzeichnis

LINQtoXML 1212Erzeugen von XML-Dokumenten über die LINQ to XML API 1212Lesen von XML-Dokumenten 1213Ändern von abgefragten XML-Daten 1215

Teil N - Debuggen 1217

50 Debuggen mit Visual C# 1219Der integrierte Debugger 1220

Vorbereitung für das Debuggen 1220Anwendungen im Debugger ausführen 1221Haltepunkte und Einzelschrittausführung 1223Die Debug-Fenster 1226

Debuggen im Code-Editor 1231DataTip (Dateninfo) 1232Schnellüberwachung 1232Bearbeiten und Fortfahren (Edit & Continue) 1232

Manuelle Debug-Techniken 1233Meldungsfenster 1233Bedingte Kompilierung 1234Assert() -Methode 1234Conditional-Attribut 1234

Anhang A - DVD-Kapitel: Schlüsselwörter 1237Diesen Anhang finden Sie als kostenlosen Zusatzinhalt auf der beiliegenden DVD.

Anhang B - DVD-Kapitel: C#-Referenz 1239Diesen Anhang finden Sie als kostenlosen Zusatzinhalt auf der beiliegenden DVD.

Stichwortverzeichnis 1241