Ardalis.SmartEnum pour C# (.NET) : guide complet avec exemples
1. Qu'est-ce que c'est et pourquoi l'utiliser ?
Ardalis.SmartEnum est une bibliothèque pour C# (.NET) qui résout l'un des problèmes les plus courants en développement : la difficulté de travailler avec les énumérations (enum). Les énumérations natives de C# ne sont en réalité qu'un ensemble de constantes entières. Elles ne peuvent pas contenir de logique, de champs supplémentaires (comme une description, un code de devise, une couleur) ou de méthodes. Cela conduit à un code gonflé avec des switch ou des if-else, ce qui viole les principes SOLID (notamment le principe Open/Closed) et rend le code moins maintenable.
SmartEnum propose une alternative : les énumérations intelligentes (Smart Enums). Ce sont des classes qui héritent de la classe de base SmartEnum<TEnum, TValue>. Chaque valeur de cette énumération est un champ statique de type singleton. Grâce à cela, vous pouvez ajouter à l'énumération toutes les propriétés souhaitées (Name, Value sont obligatoires, plus toutes les propriétés personnalisées), des méthodes, et même implémenter des interfaces. Cela transforme l'énumération d'un simple ensemble de nombres en un objet à part entière avec un comportement.
Pourquoi en avez-vous besoin ? Premièrement, pour la sécurité de typage. Vous ne pouvez pas assigner accidentellement à une variable une valeur qui n'est pas définie dans l'énumération (contrairement aux enum classiques où l'on peut faire (MyEnum)42). Deuxièmement, pour l'encapsulation de la logique. Au lieu d'écrire des méthodes d'extension ou des classes utilitaires, vous placez la logique directement à l'intérieur de l'énumération. Troisièmement, pour la lisibilité. Le code devient auto-documenté : chaque valeur de l'énumération porte non seulement un nom, mais aussi un contexte.
2. Installation
La bibliothèque s'installe via NuGet. Exécutez l'une des commandes suivantes dans la console du gestionnaire de packages ou dans le terminal .NET CLI :
# Via .NET CLI
dotnet add package Ardalis.SmartEnum
# Via Package Manager Console
Install-Package Ardalis.SmartEnum
Après l'installation, ajoutez using Ardalis.SmartEnum; en haut de votre fichier.
3. Démarrage rapide — exemple minimal fonctionnel
Créons une énumération simple pour les jours de la semaine. Notez que nous héritons de SmartEnum<TEnum, TValue>, où TEnum est notre classe et TValue est le type de la valeur (généralement int ou string).
using Ardalis.SmartEnum;
public sealed class Weekday : SmartEnum<Weekday, int>
{
// Les champs statiques sont les valeurs de l'énumération
public static readonly Weekday Monday = new Weekday(nameof(Monday), 1);
public static readonly Weekday Tuesday = new Weekday(nameof(Tuesday), 2);
public static readonly Weekday Wednesday = new Weekday(nameof(Wednesday), 3);
public static readonly Weekday Thursday = new Weekday(nameof(Thursday), 4);
public static readonly Weekday Friday = new Weekday(nameof(Friday), 5);
public static readonly Weekday Saturday = new Weekday(nameof(Saturday), 6);
public static readonly Weekday Sunday = new Weekday(nameof(Sunday), 7);
// Le constructeur privé est obligatoire
private Weekday(string name, int value) : base(name, value) { }
}
// Utilisation
public class Program
{
public static void Main()
{
var today = Weekday.Monday;
Console.WriteLine(today.Name); // Monday
Console.WriteLine(today.Value); // 1
// Recherche par valeur
var dayFromValue = Weekday.FromValue(3);
Console.WriteLine(dayFromValue.Name); // Wednesday
// Recherche par nom
var dayFromName = Weekday.FromName("Friday");
Console.WriteLine(dayFromName.Value); // 5
}
}
4. Méthodes / fonctions / classes principales
Examinons les fonctionnalités clés
Aussi dans la bibliothèque
Jetons JWT en C++ : bibliothèque jwt-cpp pour l'authentification
Génération Swagger/OpenAPI pour Go (Golang) : guide complet
Programmation Réactive en JavaScript (Node.js) : RxJS & Observables
Sinon pour JavaScript (Node.js) : guide complet avec exemples
Configuration des applications C# (.NET) : bibliothèques et approches