C# 8
Développez des applications Windows avec Visual Studio 2019
Avant-propos
Chapitre 1
Travailler avec Visual Studio 2019
1. Introduction17
2. L'interface de développement18
2.1 L'éditeur de texte20
2.2 Le concepteur de vues25
2.3 Le débogueur intégré26
2.4 Le gestionnaire d'extensions27
2.5 NuGet29
2.6 Fenêtres personnalisées31
3. La création de solutions31
3.1 Définir le point d'entrée32
3.2 La différence entre projets et solutions33
3.3 Configurer le projet34
3.4 La conversion de solutions37
3.5 Les projets partagés37
3.6 Les outils de refactorisation38
Chapitre 2
L'architecture .NET
1. Introduction41
2. CLR42
3. Les bibliothèques de classes42
4. Les types45
4.1 Les types valeur46
4.2 Les types référence47
Chapitre 3
Introduction au langage C#
1. La syntaxe49
1.1 Les identifiants49
1.2 Les mots-clés49
1.3 La ponctuation51
1.4 Les opérateurs52
1.4.1 Les opérateurs de calcul52
1.4.2 Les opérateurs d'assignation53
1.4.3 Les opérateurs de comparaison53
1.5 La déclaration de variables54
1.6 Les instructions de contrôle55
1.6.1 Les instructions conditionnelles55
1.6.2 Les instructions itératives60
1.6.3 Les instructions de saut62
1.7 Les commentaires64
2. Les espaces de noms67
2.1 Le mot-clé using68
2.2 Le mot-clé alias68
2.3 Les classes statiques69
3. Les types de base69
3.1 Les types numériques69
3.1.1 Les entiers70
3.1.2 Les décimaux71
3.2 Les booléens71
3.3 Les chaînes de caractères71
3.4 Les types nullable73
3.5 La conversion de types75
3.5.1 La conversion implicite75
3.5.2 La conversion explicite76
4. Les constantes et les énumérations76
4.1 Les constantes76
4.2 Les énumérations77
5. Les tableaux80
6. Les collections81
7. Les directives preprocessor83
Chapitre 4
La création de types
1. Introduction87
2. Les niveaux d'accès88
3. Les structures89
4. Les classes90
4.1 Les champs90
4.2 Les propriétés91
4.3 Les méthodes93
4.3.1 La surcharge95
4.3.2 Les paramètres95
4.3.3 Les tuples102
4.4 Les constructeurs102
4.5 Les destructeurs104
4.6 Les classes et membres statiques104
4.7 Les classes partielles105
4.8 Le mot-clé this106
4.9 Les indexeurs108
4.10 La surcharge d'opérateurs109
4.10.1 Les opérateurs arithmétiques110
4.10.2 Les opérateurs de comparaison112
Chapitre 5
L'héritage
1. L'héritage de classe115
1.1 Implémenter l'héritage115
1.2 Les membres virtuels117
1.3 Masquer les membres hérités117
1.4 Le mot-clé base118
1.5 Les classes et membres abstraits119
1.6 Les classes et les méthodes scellées120
1.7 Les constructeurs dérivés121
1.8 Le polymorphisme123
2. Les interfaces125
2.1 L'implémentation d'interfaces125
2.2 Le polymorphisme d'interface127
2.3 L'héritage d'interfaces129
Chapitre 6
Types génériques
1. Introduction131
2. La création de types génériques132
3. Les contraintes de type134
4. Les interfaces génériques135
4.1 La variance dans les interfaces génériques136
4.1.1 La covariance136
4.1.2 La contravariance137
4.2 La création d'interfaces génériques variantes138
4.3 L'héritage d'interfaces génériques variantes139
5. La création de méthodes génériques140
6. Valeur par défaut générique142
7. L'héritage de classe générique143
Chapitre 7
Délégués, événements et expressions lambda
1. Les délégués145
1.1 Les paramètres de méthode146
1.2 Les méthodes cibles multiples147
1.3 Les délégués génériques148
1.4 La compatibilité des délégués148
2. Les événements150
3. Les expressions lambda153
3.1 L'utilisation des expressions lambda154
3.2 Les délégués génériques155
3.3 La capture de variable155
3.4 Les fonctions locales158
Chapitre 8
Création de formulaires
1. Utiliser les formulaires159
1.1 Ajouter des formulaires au projet159
1.2 Modifier le formulaire de démarrage162
1.3 Les propriétés des formulaires162
1.4 Les méthodes des formulaires165
1.5 Les événements des formulaires166
2. Utiliser les contrôles167
2.1 Les types de contrôles167
2.2 Ajouter des contrôles aux formulaires168
2.3 Les propriétés des contrôles170
2.4 Les menus171
2.5 Les conteneurs174
2.6 L'ergonomie175
2.7 Ajouter des contrôles à la boîte à outils176
Chapitre 9
Implémentation de gestionnaires d'événements
1. Introduction179
2. La création de gestionnaires d'événements180
2.1 La mécanique d'un événement181
2.2 L'ajout dynamique d'un gestionnaire d'événement182
2.3 La suppression dynamique d'un gestionnaire d'événements183
3. Les gestionnaires d'événements avancés183
3.1 Un gestionnaire pour plusieurs événements183
3.2 Plusieurs gestionnaires pour un événement184
Chapitre 10
Validation de la saisie
1. Introduction187
2. La validation au niveau des champs187
2.1 Les propriétés de validation187
2.2 Les événements de validation188
2.2.1 KeyDown et KeyUp188
2.2.2 KeyPress189
2.2.3 Validating et Validated189
3. La validation au niveau du formulaire191
4. Les méthodes de retour à l'utilisateur194
4.1 MessageBox195
4.2 ErrorProvider196
Chapitre 11
Création de contrôles utilisateurs
1. Introduction199
2. Les contrôles personnalisés200
3. L'héritage de contrôles202
4. Les contrôles utilisateurs204
Chapitre 12
Création d'applications UWP
1. Introduction211
2. Principes212
3. Les outils de développement214
4. Le langage XAML216
5. Une première application UWP219
5.1 Les bases d'un projet UWP219
5.2 Les contrôles et événements221
5.3 Les styles222
Chapitre 13
Débogage
1. Les types d'erreur227
1.1 Les erreurs de syntaxe227
1.2 Les erreurs d'exécution228
1.3 Les erreurs de logique230
2. Le débogueur230
2.1 Contrôler l'exécution232
2.2 Les points d'arrêt233
2.2.1 Les conditions d'arrêt234
2.2.2 Le nombre d'accès235
2.2.3 Le filtrage236
2.2.4 Les actions236
2.2.5 Exécuter l'exécution jusqu'ici237
2.3 Les Data Tips237
2.4 Les PerfTips238
2.5 Les attributs Caller239
3. Les fenêtres241
3.1 La fenêtre Sortie242
3.2 La fenêtre Variables locales242
3.3 La fenêtre Automatique243
3.4 La fenêtre Espion243
3.5 La fenêtre Exécution243
3.6 Les autres fenêtres244
Chapitre 14
Gestion des exceptions
1. La classe Exception247
2. La création d'exceptions personnalisées248
3. Le déclenchement des exceptions249
4. L'interception et la gestion des exceptions252
Chapitre 15
Monitoring
1. Le traçage259
1.1 Les classes Debug et Trace259
1.2 La collection d'écouteurs262
1.2.1 La création d'écouteurs262
1.2.2 La sauvegarde des traces263
1.3 Les commutateurs de trace265
1.3.1 Le fonctionnement des commutateurs de trace265
1.3.2 La configuration des commutateurs de trace266
2. Les journaux d'événements267
2.1 L'interaction avec les journaux d'événements268
2.2 La gestion des journaux d'événements269
2.3 L'écriture d'événements270
3. Les compteurs de performance271
3.1 La création de compteurs de performance272
3.1.1 Depuis Visual Studio272
3.1.2 Depuis le code273
3.2 L'utilisation de compteurs de performance275
3.3 L'analyse de compteurs de performance278
Chapitre 16
Tests unitaires
1. Introduction aux tests unitaires281
1.1 La création du projet281
1.2 Les classes de tests unitaires282
2. La mise en place d'une série de tests284
2.1 La création de tests au projet284
2.2 Le déroulement des tests285
Chapitre 17
Création du modèle de données
1. Introduction289
2. La création d'un modèle290
3. La création d'entités291
4. La génération de la base de données297
5. La création d'entités à partir du code (Code First)302
Chapitre 18
Présentation d'Entity Framework
1. Introduction307
2. Le mappage308
2.1 La couche logique308
2.2 La couche conceptuelle310
2.3 La couche de mappage313
3. Travailler avec les entités314
3.1 Les entités315
3.2 La classe DbContext317
3.3 Les relations318
3.3.1 Le concept de table par type318
3.3.2 Le concept de table par hiérarchie318
Chapitre 19
Présentation de LINQ
1. Les requêtes LINQ321
1.1 Les syntaxe321
1.2 Les méthodes d'extension322
2. Les opérateurs de requêtes324
2.1 Filtrer324
2.1.1 Where324
2.1.2 OfType <TResult>324
2.1.3 SelectMany325
2.1.4 Skip et Take325
2.2 Ordonner326
2.2.1 OrderBy326
2.2.2 ThenBy327
2.3 Grouper327
2.3.1 GroupBy327
2.3.2 Join328
2.4 Agréger328
2.5 Convertir329
3. Les requêtes parallèles329
3.1 Partitionner une requête330
3.2 Annuler une requête331
Chapitre 20
LINQ to Entities
1. Introduction333
2. Extraire les données334
2.1 L'extraction simple334
2.2 L'extraction conditionnelle335
3. Ajouter, modifier et supprimer des données336
3.1 Ajouter des données336
3.2 Modifier des données337
3.3 Supprimer des données337
3.4 L'envoi des modifications337
Chapitre 21
LINQ to SQL
1. La création de classes LINQ to SQL339
2. L'objet DataContext342
2.1 La méthode ExecuteQuery343
2.2 Utiliser des transactions343
2.3 Les autres membres de DataContext344
3. Exécuter des requêtes avec LINQ345
3.1 Les requêtes simples345
3.2 Les requêtes filtrées346
3.3 Les requêtes de jointure346
4. Les procédures stockées346
4.1 L'ajout de procédures stockées au modèle347
4.2 L'exécution de procédures stockées348
Chapitre 22
LINQ to XML
1. Les objets XML349
1.1 XDocument349
1.2 XElement350
1.3 XNamespace351
1.4 XAttribute352
1.5 XComment352
2. Exécuter des requêtes avec LINQ353
2.1 Les requêtes simples353
2.2 Les requêtes filtrées354
2.3 Les requêtes de jointure354
Chapitre 23
Le système de fichiers
1. Les classes de gestion du système de fichiers355
1.1 DriveInfo355
1.2 Directory et DirectoryInfo357
1.3 File et FileInfo359
1.4 Path362
2. Travailler avec le système de fichiers365
2.1 Les objets Stream365
2.2 La classe FileStream365
2.3 Lire un fichier texte367
2.3.1 Lire avec la classe File367
2.3.2 Lire avec la classe StreamReader368
2.4 Écrire dans un fichier texte370
2.4.1 Écrire avec la classe File370
2.4.2 Écrire avec la classe StreamWriter371
Chapitre 24
Sérialisation
1. Introduction373
2. La sérialisation binaire374
2.1 Les bases374
2.2 Contrôler la sérialisation376
2.2.1 Le contrôle par attribut376
2.2.2 Le contrôle par interface378
3. La sérialisation XML381
3.1 Les bases382
3.2 Contrôler la sérialisation385
3.3 La sérialisation XML SOAP386
Chapitre 25
Expressions régulières
1. Introduction389
2. Une première expression régulière390
3. Les options de recherche391
4. Les caractères d'échappement392
5. Les ensembles392
6. Les groupes394
7. Les ancres395
8. Les quantifieurs396
Chapitre 26
Multithreading
1. Introduction397
2. La classe Thread398
2.1 Créer un thread398
2.2 Suspendre ou annuler un thread399
2.3 Échanger des données avec un thread400
2.4 Verrouiller un thread403
2.5 Priorité des threads404
3. Fonctions asynchrones405
3.1 Task et Task <TResult>406
3.2 async et await408
4. Le composant BackgroundWorker410
Chapitre 27
Globalisation et localisation
1. Introduction413
2. La culture413
3. La globalisation416
4. La localisation418
Chapitre 28
Sécurité
1. Introduction421
2. Les éléments de base422
2.1 L'interface IPermission422
2.2 La classe CodeAccesPermission422
2.3 L'interface IPrincipal423
3. Implémentation de la sécurité424
3.1 La sécurité basée sur les rôles424
3.1.1 Sécurité impérative425
3.1.2 Sécurité déclarative426
3.2 La sécurité basée sur les droits d'accès427
3.2.1 Sécurité impérative427
3.2.2 Sécurité déclarative428
4. Introduction à la cryptographie429
Chapitre 29
Pour aller plus loin
1. Le dessin avec GDI+433
1.1 La classe Graphics434
1.1.1 Les coordonnées434
1.1.2 Les formes435
1.2 La structure Color et les classes Brush et Pen437
1.2.1 La structure Color437
1.2.2 La classe Brush438
1.2.3 La classe Pen438
1.2.4 Les paramètres système439
1.3 Les exemples439
1.3.1 L'affichage de texte439
1.3.2 Redimensionner une image441
2. Le remoting442
2.1 Le principe442
2.2 L'implémentation443
2.2.1 La couche commune443
2.2.2 L'application serveur444
2.2.3 L'application cliente446
3. Reflection450
3.1 La classe System. Type450
3.2 Charger un assemblage dynamiquement452
3.2.1 L'énumération des types452
3.2.2 L'instanciation d'objets453
3.2.3 L'utilisation des membres454
Chapitre 30
Assemblages et configurations
1. Introduction457
2. Les assemblages privés457
3. Les assemblages partagés460
4. Les fichiers de configuration462
Chapitre 31
Déploiement
1. Introduction465
2. Les projets de déploiement466
2.1 XCOPY466
2.2 Projet CAB467
2.3 Projet de module de fusion468
2.4 Projet d'installation468
3. L'assistant Installation469
4. Configuration du projet473
4.1 Les propriétés du projet473
4.2 Les éditeurs de configuration476
4.2.1 Éditeur du système de fichiers477
4.2.2 Éditeur du registre478
4.2.3 Éditeur des types de fichiers479
4.2.4 Éditeur de l'interface utilisateur481
4.2.5 Éditeur des actions personnalisées483
4.2.6 Éditeur des conditions de lancement484
Index487