"ConcurrentDictionary" en 5 min

A partir du framework 4.0, la structure de données "ConcurrentDictionary" permet de stocker des objets rangés par clé tout en autorisant des accès provenant de "threads" multiples sans se préoccuper des problématiques de synchronisation. Son utilisation est très similaire à celle du dictionaire mise à part qu’elle possède des méthodes pour guider l’implémentation et s’affranchir…

Continuer à lire

Design pattern: Service Locator

Objectif: Proposer une implémentation simple de l’inversion de contrôle Justification Lorsqu’un objet doit utiliser une compétence implémentée dans un autre objet, la première approche est d’instancier cet autre objet et de l’utiliser au moyen de ces membres publiques. Par exemple, si on prends la classe suivante: public class ConsumingObject { private ConsumedObject consumedObject; public ConsumingClass()…

Continuer à lire

Versions des composants .NET

Sommaire 1. Synthèse des versions des composants du Framework .NET  Remplacement du Framework 4.0 par la version 4.5    Comment indiquer qu’une application nécessite le Framework 4.5 ?    Comment déterminer la version du framework installé ?    Chemin des assemblies du Framework .NET  Emplacement de MSBuild 2. Synthèse des fonctionnalités par version  Framework  Compilateur C# 3. Dates…

Continuer à lire

Fichier de configuration en .NET en 10 min

Fichier de configuration simple Ajouter un fichier à un projet avec Visual Studio Clique droit sur le projet => Add => New item => Application configuration file. Le fichier rajouté sera appelé "App.config". Lorsqu’il sera copié dans le répertoire de l’exécutable, il sera nommé: "[nom de l’exécutable].exe.config". Le contenu du fichier sera: <?xml version=”1.0″ encoding=”utf-8″…

Continuer à lire

Injection de dépendances en utilisant Unity en 10 min

L’intérêt de l’injection de dépendances est de permettre: – une meilleure maintenabilité, – de mettre en place plus facilement une méthode TDD (Test Driven Development), – d’être plus flexible (plus facile de s’adapter à une nouvelle implémentation), – d’être plus extensible (ajout plus facile de nouvelles fonctionnalités), – supporter le "late binding" (inclure des modules…

Continuer à lire

Regex en .NET en 5 min

Les regex permettent: Vérifier la syntaxe, Remplacer une partie d’une chaîne de caractères, Découper une chaîne. Une regex se définit par une suite de motifs décrivant entièrement ou en partie le contenu. Le contenu peut être décrit en définissant: La position du motif Le type du motif: en utilisant une syntaxe explicite ou des raccourcis….

Continuer à lire

Utilisation des "Task" en 5 min

Sommaire 1. Quelques patterns courants  Lancer l’exécution d’une tâche  Attendre la fin de l’exécution de la tâche  Récupérer le résultat d’une tâche  Notion de tâche parente  Utilisation de l’option de création “LongRunning”  FromException(), FromCanceled() et FromResult() 2. Gestion des exceptions  AggregateException  CancellationToken 3. TaskScheduler  Task et thread principal  Problème lecteur/écrivain 4. Exécution asynchrone 5. TaskCompletionSource…

Continuer à lire

Pourquoi implémenter "GetHashCode()" quand "Equals()" est surchargé ?

GetHashCode() permet de fournir un clé de hashage qui sera utilisée pour différencier l’objet par rapport à un autre. Par exemple, il sert pour les dictionnaires pour comparer rapidement des objets entre eux. Des objets de même type et ayant les valeurs (de propriétés par exemple) doivent avoir le même hash code. Tous les composants…

Continuer à lire