La version 0.2 de la librairie Dvp.NET est disponible !
Au programme, de nombreuses fonctionnalités supplémentaires, ainsi que des améliorations et corrections des fonctionnalités existantes :
- Assembly Developpez.Dotnet
- Classe DataExtensions
- Méthode GetStream : pour faciliter la lecture de données binaires à partir d'un champ BLOB. Permet de lire les données comme un flux, plutôt que par appels successifs à GetBytes (exemple)
- Méthodes Get[Type]OrDefault : équivalent aux méthodes Get[Type], mais permet de spécifier une valeur à renvoyer si la valeur du champ est DBNull (exemple)
- Classe EnumExtensions : améliorations diverses et correction d'un bug
- Classe DefaultDictionary : ajout d'une option pour spécifier si les clés manquantes sont ajoutées ou non, via un paramètre du constructeur (exemples)
- Classe EnumerableExtensions : nombreuses méthodes d'extension supplémentaires
- Méthode None : le contraire de Any
- Méthode GetSegment et méthodes associées : pour travailler sur des segments de tableaux
- Méthodes IndexOf, LastIndexOf : cherchent la position d'un élément dans un séquence
- Méthodes SkipFirst, SkipLast, SkipAt : sautent un élément dans une séquence
- Méthode ReplaceAt : remplace à la volée un élément dans une séquence
- Méthode InsertAt : insère à la volée un élément dans une séquence
- Méthodes ShiftLeft, ShiftRight : effectuent un décalage à gauche ou à droite des éléments d'un tableau
- Méthodes RotateLeft, RotateRight : effectuent une rotation à gauche ou à droite des éléments d'un tableau
- Méthode CopyTo : copie les éléments d'une séquence vers un tableau
- Méthode AddRange : insère plusieurs éléments dans une collection (équivalent à List<T>.AddRange, mais pour tous les types implémentant ICollection<T>)
- Méthode ContainsAny : vérifie si une séquence contient au moins un des éléments spécifiés
- Méthode Apply : applique une action à la volée sur chaque élément d'une séquence
- Classe DictionaryExtensions :
- Méthode ToDictionary : reconstruit un dictionnaire à partir d'une séquence de paires clés/valeurs (utile pour concaténer ou fusionner 2 dictionnaires). (exemple)
- Classe CollectionFactory : permet de créer des collections génériques avec des types anonymes, grâce à l'inférence de type (exemple)
- Classe StringExtensions
- Méthode Take : indique le nombre de caractères à prendre (s'utilise en conjonction avec From). (exemples)
- Classe LinqHelper : des méthodes pour faciliter l'utilisation de Linq (expressions lambdas, arbres syntaxiques...)
- Méthode GetPropertyName : obtenir le nom d'une propriété à partir d'une expression lambda. Cela permet notamment d'éviter les "magic strings" que le compilateur ne peut pas vérifier (exemple)
- Méthode GetMethodName : idem, pour une méthode (exemple)
- Méthode Expr : permet de déclarer une expression Linq en tirant parti de l'inférence de type (utile pour les types anonymes) (exemple)
- Méthode Func : permet de déclarer un delegate en tirant parti de l'inférence de type (utile pour les types anonymes)
- Classe FuncExtensions : de nouvelles méthodes pour la programmation fonctionnelle
- Méthodes ApplyFirst, ApplySecond, etc : obtient une nouvelle fonction en fixant la valeur d'un de ses paramètres (application partielle)
- Classe CoreExtensions :
- Méthode Switch : permet d'évaluer une valeur de façon similaire à une instruction switch, mais beaucoup plus souple (similaire au "pattern matching" des langages fonctionnels). (exemple)
- Méthode GetService<T> : facilite l'utilisation de l'interface IServiceProvider, en évitant de faire des conversions et de répéter 3 fois le type...
- Méthode CheckArgumentOutOfRange : vérifie qu'un argument est bien dans la plage attendue, et lève une exception ArgumentOutOfRange si ce n'est pas le cas
- Méthode MakeHashCode : permet de générer facilement un hashcode pour un objet à l'aide d'un algorithme fiable
- Classe WeakEvent<TEventHandler> : un wrapper d'évènement qui maintient des références faibles sur ses handlers, pour éviter les fuites mémoires dues à des handlers non retirés (exemple)
- ImmutableList<T> : une liste générique immuable. Les méthodes Add, Remove, etc renvoient une nouvelle liste qui comporte les modifications. Utile pour la programmation fonctionnelle
- Classe ReflectionExtensions :
- Méthode GetDefaultValue : renvoie la valeur par défaut d'un type
- Classe ReadOnlyDictionary :
- Méthode FromNonGenericDictionary : pour créer un dictionnaire en lecture seule à partir d'un dictionnaire non générique
- Classe AutoStopwatch : pour mesurer précisément le temps écoulé pour effectuer une action. Equivalent à la classe Stopwatch, mais plus simple d'utilisation (exemple)
- Classe NotifyPropertyChangedExtensions : méthodes d'extension pour gérer les notifications PropertyChanged, et les dépendences entre diverses propriétés d'un objet. (exemples)
- Classe MethodCallMonitor : 2 bugs critiques corrigés
- Assembly Developpez.Dotnet.Windows (pour WPF)
- Propriété attachée DragMove.Enabled : pour activer déclarativement en XAML le déplacement automatique d'une fenêtre sans bordure
- Classe DependencyObjectExtensions : correction d'un bug critique dans la méthode FindAncestor
- Classe GridViewColumns : des propriétés attachées pour définir par binding la liste des colonnes d'une GridView (exemple à venir sur le wiki)
- Classe UpdatableMarkupExtension : classe de base pour des markup extensions qui mettent à jour leur cible (exemple à venir sur le wiki)
- Classe ObservableCollectionExtensions : une méthode d'extension AsObservable pour faciliter la créations de collections observables
- Classe RangeObservableCollection :
- Méthode ReplaceRange : remplace plusieurs valeurs consécutives dans la collection, avec une seule notification de changement
- L'assembly Developpez.Dotnet.SystemUtils a été renommé en Developpez.Dotnet.System
- Ajout d'une nouvelle version des binaires, spécifique pour l'utilisation avec .NET 4 : certaines méthodes en sont exclues, afin d'éviter les conflits avec des méthodes introduites dans .NET 4 (par exemple Enumerable.Zip)
- Quelques améliorations de la documentation
- Ajout d'un package comprenant les binaires, les sources et la doc, plus pratique que de tout télécharger séparément...
N'hésitez pas à tester tout ça et à nous faire part de vos retours![]()
Partager