C# 9
Développez des applications Windows avec Visual Studio 2019
Éditions ENI
Avant-propos
Chapitre 1
Travailler avec Visual Studio2019
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 NuCet29
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 solutions34
3.3 Configurer le projet35
3.4 La conversion de solutions38
3.5 Les projets partagés38
3.6 Les outils de refactorisation39
Chapitre 2
L'architecture .NET
1. Introduction43
2. CLR44
3. Les bibliothèques de classes45
4. Les types47
4.1 Les types valeur48
4.2 Les types référence49
Chapitre 3
Introduction au langage C#
1. La syntaxe51
1.1 Les identifiants51
1.2 Les mots-clés51
1.3 La ponctuation53
1.4 Les opérateurs54
1.4.1 Les opérateurs de calcul54
1.4.2 Les opérateurs d'assignation55
1.4.3 Les opérateurs de comparaison55
1.5 La déclaration de variables57
1.6 Les instructions de contrôle58
1.6.1 Les instructions conditionnelles58
1.6.2 Les instructions itératives62
1.6.3 Les instructions de saut65
1.7 Les commentaires67
2. Les espaces de noms70
2.1 Le mot-clé using71
2.2 Le mot-clé alias71
2.3 Les classes statiques72
3. Les types de base72
3.1 Les types numériques : 72
3.1.1 Les entiers73
3.1.2 Les décimaux74
3.2 Les booléens74
3.3 Les chaînes de caractères74
3.4 Les types nullable76
3.5 La conversion de types78
3.5.1 La conversion implicite78
3.5.2 La conversion explicite79
4. Les constantes et les énumérations79
4.1 Les constantes79
4.2 Les énumérations80
5. Les tableaux83
6. Les collections84
7. Les directives preprocessor86
Chapitre 4
La création de types
1. Introduction89
2. Les niveaux d'accès90
3. Les structures91
4. Les classes92
4.1 Les champs92
4.2 Les propriétés93
4.3 Les méthodes95
4.3.1 La surcharge97
4.3.2 Les paramètres97
4.3.3 Les tuples104
4.3.4 Les méthodes partielles104
4.4 Les constructeurs105
4.5 Les destructeurs106
4.6 Les classes et membres statiques107
4.7 Les classes partielles107
4.8 Le mot-clé this109
4.9 Les indexeurs110
4.10 La surcharge d'opérateurs111
4.10.1Les opérateurs arithmétiques112
4.10.2Les opérateurs de comparaison114
5. Les records116
Chapitre 5
L'héritage
1. L'héritage de classe117
1.1 Implémenter l'héritage117
1.2 Les membres virtuels119
1.3 Masquer les membres hérités119
1.4 Le mot-clé base120
1.5 Les classes et membres abstraits121
1.6 Les classes et les méthodes scellées122
1.7 Les constructeurs dérivés123
1.8 Le polymorphisme125
2. Les interfaces127
2.1 L'implémentation d'interfaces127
2.2 Le polymorphisme d'interface129
2.3 L'héritage d'interfaces131
Chapitre 6
Types génériques
1. Introduction133
2. La création de types génériques134
3. Les contraintes de type136
4. Les interfaces génériques137
4.1 La variance dans les interfaces génériques138
4.1.1 La covariance138
4.1.2 La contravariance140
4.2 La création d'interfaces génériques variantes141
4.3 L'héritage d'interfaces génériques variantes142
5. La création de méthodes génériques142
6. Valeur par défaut générique145
7. L'héritage de classe générique145
Chapitre 7
Délégués, événements et expressions lambda
1. Les délégués147
1.1 Les paramètres de méthode148
1.2 Les méthodes cibles multiples149
1.3 Les délégués génériques150
1.4 La compatibilité des délégués150
2. Les événements152
3. Les expressions lambda155
3.1 L'utilisation des expressions lambda156
3.2 Les délégués génériques157
3.3 La capture de variable158
3.4 Les fonctions locales161
Chapitre 8
Création de formulaires
1. Utiliser les formulaires163
1.1 Ajouter des formulaires au projet163
1.2 Modifier le formulaire de démarrage166
1.3 Les propriétés des formulaires166
1.4 Les méthodes des formulaires169
1.5 Les événements des formulaires170
2. Utiliser les contrôles171
2.1 Les types de contrôles171
2.2 Ajouter des contrôles aux formulaires173
2.3 Les propriétés des contrôles174
2.4 Les menus176
2.5 Les conteneurs179
2.6 L'ergonomie180
2.7 Ajouter des contrôles à la boîte à outils181
Chapitre 9
Implémentation de gestionnaires d'événements
1. Introduction183
2. La création de gestionnaires d'événements184
2.1 La mécanique d'un événement186
2.2 L'ajout dynamique d'un gestionnaire d'événements186
2.3 La suppression dynamique d'un gestionnaire d'événements187
3. Les gestionnaires d'événements avancés188
3.1 Un gestionnaire pour plusieurs événements188
3.2 Plusieurs gestionnaires pour un événement189
Chapitre 10
Validation de la saisie
1. Introduction191
2. La validation au niveau des champs191
2.1 Les propriétés de validation191
2.2 Les événements de validation192
2.2.1 KeyDown et KeyUp192
2.2.2 KeyPress193
2.2.3 Validating et Validated193
3. La validation au niveau du formulaire195
4. Les méthodes de retour à l'utilisateur198
4.1 MessageBox199
4.2 ErrorProvider200
Chapitre 11
Création de contrôles utilisateurs
1. Introduction203
2. Les contrôles personnalisés204
3. L'héritage de contrôles206
4. Les contrôles utilisateurs208
Chapitre 12
Création d'applications UWP
1. Introduction215
2. Principes216
3. Les outils de développement218
4. Le langage XAML221
5. Une première application UWP223
5.1 Les bases d'un projet UWP223
5.2 Les contrôles et événements225
5.3 Les styles227
Chapitre 13
Débogage
1. Les types d'erreur231
1.1 Les erreurs de syntaxe231
1.2 Les erreurs d'exécution232
1.3 Les erreurs de logique234
2. Le débogueur234
2.1 Contrôler l'exécution236
2.2 Les points d'arrêt237
2.2.1 Les conditions d'arrêt238
2.2.2 Le nombre d'accès239
2.2.3 Le filtrage240
2.2.4 Les actions240
2.2.5 Exécuter l'exécution jusqu'ici241
2.3 Les DataTips241
2.4 Les PerfTips242
2.5 Les attributs Caller243
3. Les fenêtres245
3.1 La fenêtre Sortie246
3.2 La fenêtre Variables locales246
3.3 La fenêtre Automatique247
3.4 La fenêtre Espion247
3.5 La fenêtre Exécution248
3.6 Les autres fenêtres249
Chapitre 14
Gestion des exceptions
1. La classe Exception251
2. La création d'exceptions personnalisées 252
3. Le déclenchement des exceptions253
4. L'interception et la gestion des exceptions256
Chapitre 15
Monitoring
1. Le traçage263
1.1 Les classes Debug et Trace263
1.2 La collection d'écouteurs266
1.2.1 La création d'écouteurs266
1.2.2 La sauvegarde des traces267
1.3 Les commutateurs de trace269
1.3.1 Le fonctionnement des commutateurs de trace269
1.3.2 La configuration des commutateurs de trace270
2. Les journaux d'événements271
2.1 L'interaction avec les journaux d'événements272
2.2 La gestion des journaux d'événements273
2.3 L'écriture d'événements274
3. Les compteurs de performance275
3.1 La création de compteurs de performance276
3.1.1 Depuis Visual Studio276
3.1.2 Depuis le code277
3.2 L'utilisation de compteurs de performance279
3.3 L'analyse de compteurs de performance282
Chapitre 16
Tests unitaires
1. Introduction aux tests unitaires285
1.1 La création du projet285
1.2 Les classes de tests unitaires286
2. La mise en place d'une série de tests288
2.1 La création de tests au projet288
2.2 Le déroulement des tests289
Chapitre 17
Création du modèle de données
1. Introduction293
2. La création d'un modèle294
3. La création d'entités295
4. La génération de la base de données301
5. La création d'entités à partir du code (Code First)307
Chapitre 18
Présentation d'Entity Framework
1. Introduction313
2. Le mappage314
2.1 La couche logique314
2.2 La couche conceptuelle316
2.3 La couche de mappage319
3. Travailler avec les entités320
3.1 Les entités321
3.2 La classe DbContext323
3.3 Les relations324
3.3.1 Le concept de table par type324
3.3.2 Le concept de table par hiérarchie324
Chapitre 19
Présentation de LINQ
1. Les requêtes LINQ327
1.1 La syntaxe327
1.2 Les méthodes d'extension328
2. Les opérateurs de requêtes330
2.1 Filtrer330
2.1.1 Where330
2.1.2 OfType<TResult>330
2.1.3 SelectMany331
2.1.4 Skip et Take.331
2.2 Ordonner332
2.2.1 OrderBy332
2.2.2 ThenBy333
2.3 Grouper333
2.3.1 GroupBy333
2.3.2 Join334
2.4 Agréger334
2.5 Convertir335
3. Les requêtes parallèles335
3.1 Partitionner une requête336
3.2 Annuler une requête337
Chapitre 20
LINQ to Entîtïes
1. Introduction339
2. Extraire les données340
2.1 L'extraction simple340
2.2 L'extraction conditionnelle341
3. Ajouter, modifier et supprimer des données342
3.1 Ajouter des données342
3.2 Modifier des données343
3.3 Supprimer des données343
3.4 L'envoi des modifications343
Chapitre 21
LINQ to SQL
1. La création de classes LINQ to SQL345
2. L'objet DataContext348
2.1 La méthode ExecuteQuery349
2.2 Utiliser des transactions349
2.3 Les autres membres de DataContext350
3. Exécuter des requêtes avec LINQ351
3.1 Les requêtes simples351
3.2 Les requêtes filtrées352
3.3 Les requêtes de jointure352
4. Les procédures stockées352
4.1 L'ajout de procédures stockées au modèle353
4.2 L'exécution de procédures stockées354
Chapitre 22
LINQ to XML
1. Les objets XML355
1.1 XDocument355
1.2 XElement356
1.3 XNamespace357
1.4 XAttribute358
1.5 XComment358
2. Exécuter des requêtes avec LINQ359
2.1 Les requêtes simples359
2.2 Les requêtes filtrées360
2.3 Les requêtes de jointure360
Chapitre 23
Le système de fichiers
1. Les classes de gestion du système de fichiers361
1.1 Drivelnfo361
1.2 Directory et Directorylnfo363
1.3 File et Filelnfo365
1.4 Path368
2. Travailler avec le système de fichiers371
2.1 Les objets Stream371
2.2 La classe FileStream371
2.3 Lire un fichier texte373
2.3.1 Lire avec la classe File373
2.3.2 Lire avec la classe StreamReader374
2.4 Écrire dans un fichier texte376
2.4.1 Écrire avec la classe File376
2.4.2 Écrire avec la classe StreamWriter377
Chapitre 24
Sérialisation
1. Introduction379
2. La sérialisation binaire380
2.1 Les bases380
2.2 Contrôler la sérialisation382
2.2.1 Le contrôle par attribut382
2.2.2 Le contrôle par interface384
3. La sérialisation XML387
3.1 Les bases388
3.2 Contrôler la sérialisation391
3.3 La sérialisation XML SOAP392
Chapitre 25
Expressions régulières
1. Introduction395
2. Une première expression régulière396
3. Les options de recherche397
4. Les caractères d'échappement398
5. Les ensembles398
6. Les groupes400
7. Les ancres401
8. Les quantifieurs402
Chapitre 26
Multithreading
1. Introduction403
2. La classe Thread404
2.1 Créer un thread404
2.2 Suspendre ou annuler un thread405
2.3 Échanger des données avec un thread406
2.4 Verrouiller un thread409
2.5 Priorité des threads410
3. Fonctions asynchrones411
3.1 Task et Task<TResult>412
3.2 async et await414
4. Le composant BackgroundWorker 416
Chapitre 27
Globalisation et localisation
1. Introduction419
2. La culture420
3. La globalisation422
4. La localisation424
Chapitre 28
Sécurité
1. Introduction429
2. Les éléments de base.430
2.1 L'interface Permission430
2.2 La classe Code Access Permission431
2.3 L'interface Principal431
3. Implémentation de la sécurité433
3.1 La sécurité basée sur les rôles433
3.1.1 Sécurité impérative433
3.1.2 Sécurité déclarative435
3.2 La sécurité basée sur les droits d'accès435
3.2.1 Sécurité impérative436
3.2.2 Sécurité déclarative437
4. Introduction à la cryptographie438
Chapitre 29
Pour aller plus loin
1. Le dessin avec GDI+441
1.1 La classe Graphics442
1.1.1 Les coordonnées442
1.1.2 Les formes443
1.2 La structure Color et les classes Brush et Pen445
1.2.1 La structure Color445
1.2.2 La classe Brush446
1.2.3 La classe Pen446
1.2.4 Les paramètres système447
1.3 Les exemples447
1.3.1 L'affichage de texte447
1.3.2 Redimensionner une image449
2. Le remoting450
2.1 Le principe450
2.2 L'implémentation451
2.2.1 La couche commune451
2.2.2 L'application serveur452
2.2.3 L'application cliente454
3. Reflection458
3.1 La classe System Type458
3.2 Charger un assemblage dynamiquement460
3.2.1 L'énumération des types460
3.2.2 L'instanciation d'objets461
3.2.3 L'utilisation des membres462
Chapitre 30
Assemblages et configurations
1. Introduction465
2. Les assemblages privés465
3. Les assemblages partagés468
4. Les fichiers de configuration470
Chapitre 31
Déploiement
1. Introduction473
2. Les projets de déploiement474
2.1 XCOPY474
2.2 Projet CAB475
2.3 Projet de module de fusion476
2.4 Projet d'installation476
3. L'assistant Installation477
4. Configuration du projet481
4.1 Les propriétés du projet481
4.2 Les éditeurs de configuration484
4.2.1 Éditeur du système de fichiers485
4.2.2 Éditeur du registre486
4.2.3 Éditeur des types de fichiers487
4.2.4 Éditeur de l'interface utilisateur489
4.2.5 Éditeur des actions personnalisées491
4.2.6 Éditeur des conditions de lancement492
Index
495