C# 12
Développez des applications Windows avec Visual Studio 2022
Jérôme Hugon
Éditions ENI
Avant-propos
Chapitre 1
Travailler avec Visual Studio 2022
1. Introduction19
2. L'interface de développement20
2.1 L'éditeur de texte22
2.2 Le concepteur de vues27
2.3 Le débogueur intégré28
2.4 Le gestionnaire d'extensions29
2.5 NuGet31
2.6 Fenêtres personnalisées33
3. La création de solutions33
3.1 Définir le point d'entrée34
3.2 La différence entre projets et solutions36
3.3 Configurer le projet37
3.4 Les projets partagés39
3.5 Les outils de refactorisation40
Chapitre 2
L'architecture .Net
1. Introduction43
2. CLR 44
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 variables56
1.6 Les instructions de contrôle57
1.6.1 Les instructions conditionnelles57
1.6.2 Les instructions itératives62
1.6.3 Les instructions de saut65
1.7 Les commentaires67
2. Les espaces de noms71
2.1 Déclarer un espace de noms71
2.2 Le mot-clé using72
2.3 Le mot-clé alias72
2.4 Les classes statiques73
2.5 Les directives using globales73
3. Les types de base74
3.1 Les types numériques74
3.1.1 Les entiers74
3.1.2 Les décimaux75
3.2 Les booléens75
3.3 Les chaînes de caractères76
3.4 Les types nullables80
3.5 La conversion de types81
3.5.1 La conversion implicite82
3.5.2 La conversion explicite82
4. Les constantes et les énumérations83
4.1 Les constantes83
4.2 Les énumérations84
5. Les tableaux86
6. Les collections88
7. Les directives preprocessor91
Chapitre 4
La création de types
1. Introduction95
2. Les niveaux d'accès96
3. Les structures97
4. Les classes99
4.1 Les champs99
4.2 Les propriétés100
4.3 Les méthodes102
4.3.1 La surcharge104
4.3.2 Les paramètres105
4.3.3 Les tuples111
4.3.4 Les méthodes partielles112
4.4 Les constructeurs112
4.5 Les destructeurs114
4.6 Les classes et membres statiques115
4.7 Les classes partielles116
4.8 Le mot-clé this117
4.9 Les indexeurs118
4.10 Les attributs120
4.11 La surcharge d'opérateurs121
4.11.1 Les opérateurs arithmétiques121
4.11.2 Les opérateurs de comparaison123
5. Les records125
Chapitre 5
L'héritage
1. L'héritage de classe127
1.1 Implémenter l'héritage127
1.2 Les membres virtuels129
1.3 Masquer les membres hérités130
1.4 Le mot-clé base131
1.5 Les classes et membres abstraits131
1.6 Les classes et les méthodes scellées132
1.7 Les constructeurs dérivés134
1.8 Le polymorphisme136
2. Les interfaces138
2.1 L'implémentation d'interfaces138
2.2 Le polymorphisme d'interface140
2.3 L'héritage d'interfaces142
Chapitre 6
Types génériques
1. Introduction143
2. La création de types génériques144
3. Les contraintes de type147
4. Les interfaces génériques148
4.1 La variance dans les interfaces génériques149
4.1.1 La covariance149
4.1.2 La contravariance150
4.2 La création d'interfaces génériques variantes151
4.3 L'héritage d'interfaces génériques variantes152
5. Les attributs génériques153
6. La création de méthodes génériques154
7. Valeur par défaut générique157
8. L'héritage de classe générique157
Chapitre 7
Délégués, événements et expressions lambda
1. Les délégués159
1.1 Les paramètres de méthode160
1.2 Les méthodes cibles multiples161
1.3 Les délégués génériques162
1.4 La compatibilité des délégués162
2. Les événements164
3. Les expressions lambda167
3.1 L'utilisation des expressions lambda168
3.2 Les délégués génériques170
3.3 La capture de variable170
3.4 Les fonctions locales173
Chapitre 8
Création de formulaires
1. Utiliser les formulaires175
1.1 Ajouter des formulaires au projet175
1.2 Modifier le formulaire de démarrage178
1.3 Les propriétés des formulaires ...178
1.4 Les méthodes des formulaires181
1.5 Les événements des formulaires182
2. Utiliser les contrôles183
2.1 Les types de contrôles183
2.2 Ajouter des contrôles aux formulaires185
2.3 Les propriétés des contrôles187
2.4 Les menus189
2.5 Les conteneurs191
2.6 L'ergonomie192
2.7 Ajouter des contrôles à la boîte à outils194
Chapitre 9
Implémentation de gestionnaires d'événements
1. Introduction195
2. La création de gestionnaires d'événements196
2.1 La mécanique d'un événement198
2.2 L'ajout dynamique d'un gestionnaire d'événements198
2.3 La suppression dynamique d'un gestionnaire d'événements199
3. Les gestionnaires d'événements avancés200
3.1 Un gestionnaire pour plusieurs événements200
3.2 Plusieurs gestionnaires pour un événement201
Chapitre 10
Validation de la saisie
1. Introduction203
2. La validation au niveau des champs203
2.1 Les propriétés de validation203
2.2 Les événements de validation204
2.2.1 KeyDown et KeyUp204
2.2.2 KeyPress205
2.2.3 Validating et Validated205
3. La validation au niveau du formulaire207
4. Les méthodes de retour à l'utilisateur210
4.1 MessageBox210
4.2 ErrorProvider212
Chapitre 11
Création de contrôles utilisateurs
1. Introduction215
2. Les contrôles personnalisés216
3. L'héritage de contrôles218
4. Les contrôles utilisateurs220
Chapitre 12
Création d'applications UWP
1. Introduction227
2. Principes227
3. Les outils de développement229
4. Le langage XAML232
5. Une première application UWP234
5.1 Les bases d'un projet UWP234
5.2 Les contrôles et événements236
5.3 Les styles237
Chapitre 13
Débogage
1. Les types d'erreurs241
1.1 Les erreurs de syntaxe241
1.2 Les erreurs d'exécution242
1.3 Les erreurs de logique244
2. Le débogueur244
2.1 Contrôler l'exécution246
2.2 Les points d'arrêt247
2.2.1 Les conditions d'arrêt248
2.2.2 Le nombre d'accès249
2.2.3 Le filtrage250
2.2.4 Les actions250
2.2.5 Exécuter l'exécution jusqu'ici251
2.3 Les DataTips251
2.4 Les PerfTips252
2.5 Les attributs Caller253
3. Les fenêtres255
3.1 La fenêtre Sortie256
3.2 La fenêtre Variables locales256
3.3 La fenêtre Automatique257
3.4 La fenêtre Espion257
3.5 La fenêtre Exécution258
3.6 Les autres fenêtres259
Chapitre 14
Gestion des exceptions
1. La classe Exception261
2. La création d'exceptions personnalisées262
3. Le déclenchement des exceptions263
4. L'interception et la gestion des exceptions266
Chapitre 15
Monitoring
1. Le traçage273
1.1 Les classes Debug et Trace273
1.2 La collection d'écouteurs276
1.2.1 La création d'écouteurs276
1.2.2 La sauvegarde des traces277
1.3 Les commutateurs de trace279
1.3.1 Le fonctionnement des commutateurs de trace279
1.3.2 La configuration des commutateurs de trace280
2. Les journaux d'événements281
2.1 L'interaction avec les journaux d'événements282
2.2 La gestion des journaux d'événements283
2.3 L'écriture d'événements284
3. Les compteurs de performance285
3.1 La création de compteurs de performance286
3.1.1 Depuis Visual Studio286
3.1.2 Depuis le code288
3.2 L'utilisation de compteurs de performance289
3.3 L'analyse de compteurs de performance292
Chapitre 16
Tests unitaires
1. Introduction aux tests unitaires295
1.1 La création du projet295
1.2 Les classes de tests unitaires296
2. La mise en place d'une série de tests298
2.1 La création de tests au projet298
2.2 Le déroulement des tests299
Chapitre 17
Création du modèle de données
1. Introduction303
2. La création d'un modèle304
3. La création d'entités306
4. La-génération de la base de données311
5. La création d'entités à partir du code (Code First)317
Chapitre 18
Présentation d'Entity Framework
1. Introduction323
2. Le mappage324
2.1 La couche logique324
2.2 La couche conceptuelle326
2.3 La couche de mappage329
3. Travailler avec les entités330
3.1 Les entités332
3.2 La classe DbContext333
3.3 Les relations334
3.3.1 Le concept de table par type334
3.3.2 Le concept de table par hiérarchie335
Chapitre 19
Présentation de LINQ
1. Les requêtes LINQ337
1.1 La syntaxe337
1.2 Les méthodes d'extension338
2. Les opérateurs de requêtes340
2.1 Filtrer340
2.1.1 Where340
2.1.2 OfType<TResult>340
2.1.3 SelectMany341
2.1.4 Skip et Take341
2.2 Ordonner342
2.2.1 OrderBy342
2.2.2 ThenBy343
2.3 Grouper343
2.3.1 GroupBy343
2.3.2 Join344
2.4 Agréger345
2.5 Convertir345
3. Les requêtes parallèles346
3.1 Partitionner une requête347
3.2 Annuler une requête348
Chapitre 20
LINQ to Entities
1. Introduction349
2. Extraire les données350
2.1 L'extraction simple350
2.2 L'extraction conditionnelle351
3. Ajouter, modifier et supprimer des données353
3.1 Ajouter des données353
3.2 Modifier des données354
3.3 Supprimer des données354
3.4 L'envoi des modifications354
Chapitre 21
LINQ to SQL
1. La création de classes LINQ to SQL355
2. L'objet DataContext358
2.1 La méthode ExecuteQuery359
2.2 Utiliser des transactions359
2.3 Les autres membres de DataContext360
3. Exécuter des requêtes avec LINQ361
3.1 Les requêtes simples361
3.2 Les requêtes filtrées362
3.3 Les requêtes de jointure362
4. Les procédures stockées362
4.1 L'ajout de procédures stockées au modèle363
4.2 L'exécution de procédures stockées364
Chapitre 22
LINQ to XML
1. Les objets XML365
1.1 XDocument365
1.2 XElement366
1.3 XNamespace367
1.4 XAttribute368
1.5 XComment369
2. Exécuter des requêtes avec LINQ369
2.1 Les requêtes simples370
2.2 Les requêtes filtrées370
2.3 Les requêtes de jointure371
Chapitre 23
Le système de fichiers
1. Les classes de gestion du système de fichiers373
1.1 DriveInfo373
1.2 Directory et DirectoryInfo375
1.3 File et FileInfo377
1.4 Path380
2. Travailler avec le système de fichiers383
2.1 Les objets Stream383
2.2 La classe FileStream383
2.3 Lire un fichier texte385
2.3.1 Lire avec la classe File385
2.3.2 Lire avec la classe StreamReader386
2.4 Écrire dans un fichier texte388
2.4.1 Écrire avec la classe File388
2.4.2 Écrire avec la classe StreamWriter389
Chapitre 24
Sérialisation
1. Introduction391
2. La sérialisation binaire392
2.1 Les bases392
2.2 Contrôler la sérialisation394
2.2.1 Le contrôle par attribut394
2.2.2 Le contrôle par interface396
3. La sérialisation XML399
3.1 Les bases400
3.2 Contrôler la sérialisation403
3.3 La sérialisation XML SOAP404
Chapitre 25
Expressions régulières
1. Introduction407
2. Une première expression régulière408
3. Les options de recherche409
4. Les caractères d'échappement410
5. Les ensembles410
6. Les groupes412
7. Les ancres413
8. Les quantifieurs414
Chapitre 26
Multithreading
1. Introduction415
2. La classe Thread416
2.1 Créer un thread416
2.2 Suspendre un thread417
2.3 Echanger des données avec un thread418
2.4 Verrouiller un thread420
2.5 Priorité des threads421
3. Fonctions asynchrones422
3.1 Task et Task<TResult>424
3.2 async et await425
4. Le composant BackgroundWorker427
Chapitre 27
Globalisation et localisation
1. Introduction431
2. La culture432
3. La globalisation434
4. La localisation436
Chapitre 28
Sécurité
1. Introduction441
2. Les éléments de base442
2.1 L'interface IPermission442
2.2 La classe CodeAccessPermission442
2.3 L'interface IPrincipal443
3. Implémentation de la sécurité444
3.1 La sécurité basée sur les rôles444
3.2 La sécurité basée sur les droits d'accès446
3.2.1 Sécurité impérative446
3.2.2 Sécurité déclarative448
4. Introduction à la cryptographie449
Chapitre 29
Pour aller plus loin
1. Le dessin avec GDI +453
1.1 La classe Graphics454
1.1.1 Les coordonnées455
1.1.2 Les formes455
1.2 La structure Color et les classes Brush et Pen457
1.2.1 La structure Color457
1.2.2 La classe Brush458
1.2.3 La classe Pen458
1.2.4 Les paramètres système459
1.3 Les exemples459
1.3.1 L'affichage de texte459
1.3.2 Redimensionner une image461
2. Le remoting462
2.1 Le principe462
2.2 L'implémentation463
2.2.1 La couche commune463
2.2.2 L'application serveur465
2.2.3 L'application cliente467
3. Reflection470
3.1 La classe System.Type470
3.2 Charger un assemblage dynamiquement472
3.2.1 L'énumération des types472
3.2.2 L'instanciation d'objets473
3.2.3 L'utilisation des membres474
Chapitre 30
Assemblages et configurations
1. Introduction477
2. Les assemblages privés477
3. Les assemblages partagés480
4. Les fichiers de configuration481
Chapitre 31
Déploiement
1. Introduction483
2. Les projets de déploiement484
2.1 XCOPY484
2.2 Projet CAB485
2.3 Projet de module de fusion486
2.4 Projet d'installation486
3. L'assistant Installation487
4. Configuration du projet491
4.1 Les propriétés du projet491
4.2 Les éditeurs de configuration494
4.2.1 Éditeur du système de fichiers495
4.2.2 Éditeur du registre496
4.2.3 Éditeur des types de fichiers497
4.2.4 Éditeur de l'interface utilisateur499
4.2.5 Éditeur des actions personnalisées501
4.2.6 Éditeur des conditions de lancement502
Index
505