Ardalis.SmartEnum für C# (.NET): Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Ardalis.SmartEnum für C# (.NET): Vollständige Anleitung mit Beispielen

1. Was ist das und warum wird es benötigt?

Ardalis.SmartEnum ist eine Bibliothek für C# (.NET), die eines der häufigsten Probleme in der Softwareentwicklung löst: die umständliche Arbeit mit Aufzählungen (enum). Die in C# integrierten Aufzählungen sind im Grunde nur eine Sammlung von Integer-Konstanten. Sie können keine Logik, zusätzliche Felder (z. B. Beschreibung, Währungscode, Farbe) oder Methoden enthalten. Dies führt zu aufgeblähtem Code mit switch- oder if-else-Anweisungen, was gegen die SOLID-Prinzipien (insbesondere das Open/Closed-Prinzip) verstößt und den Code weniger wartbar macht.

SmartEnum bietet eine Alternative: Intelligente Aufzählungen (Smart Enums). Dies sind Klassen, die von der Basisklasse SmartEnum<TEnum, TValue> erben. Jeder Wert einer solchen Aufzählung ist ein statisches Singleton-Feld. Dadurch können Sie der Aufzählung beliebige Eigenschaften (Name, Value sind Pflicht, plus beliebige benutzerdefinierte), Methoden und sogar Schnittstellenimplementierungen hinzufügen. Dies verwandelt eine Aufzählung von einer einfachen Zahlenmenge in ein vollwertiges Objekt mit Verhalten.

Warum wird das benötigt? Erstens für die Typsicherheit. Sie können einer Variablen nicht versehentlich einen Wert zuweisen, der in der Aufzählung nicht definiert ist (im Gegensatz zu normalen Enums, wo Sie (MyEnum)42 schreiben können). Zweitens für die Kapselung von Logik. Anstatt Erweiterungsmethoden oder Hilfsklassen zu schreiben, platzieren Sie die Logik direkt in der Aufzählung. Drittens für die Lesbarkeit. Der Code wird selbstdokumentierend: Jeder Wert der Aufzählung trägt nicht nur einen Namen, sondern auch einen Kontext.

2. Installation

Die Bibliothek wird über NuGet installiert. Führen Sie einen der folgenden Befehle in der Paket-Manager-Konsole oder im .NET CLI-Terminal aus:

# Über .NET CLI
dotnet add package Ardalis.SmartEnum

# Über Package Manager Console
Install-Package Ardalis.SmartEnum

Fügen Sie nach der Installation using Ardalis.SmartEnum; am Anfang Ihrer Datei hinzu.

3. Schnellstart – Minimales funktionierendes Beispiel

Erstellen wir eine einfache Aufzählung für Wochentage. Beachten Sie: Wir erben von SmartEnum<TEnum, TValue>, wobei TEnum unsere Klasse und TValue der Wertetyp (normalerweise int oder string) ist.

using Ardalis.SmartEnum;

public sealed class Weekday : SmartEnum<Weekday, int>
{
    // Statische Felder – das sind die Werte der Aufzählung
    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);

    // Privater Konstruktor ist erforderlich
    private Weekday(string name, int value) : base(name, value) { }
}

// Verwendung
public class Program
{
    public static void Main()
    {
        var today = Weekday.Monday;
        Console.WriteLine(today.Name);   // Monday
        Console.WriteLine(today.Value);  // 1

        // Suche nach Wert
        var dayFromValue = Weekday.FromValue(3);
        Console.WriteLine(dayFromValue.Name); // Wednesday

        // Suche nach Name
        var dayFromName = Weekday.FromName("Friday");
        Console.WriteLine(dayFromName.Value); // 5
    }
}

4. Wichtige Methoden/Funktionen/Klassen

Betrachten wir die wichtigsten

Empfehlungen