Avatar ·

Wie erstelle ich eine generische Methode mit Einschränkung T auf Enum in C#?

Hallo zusammen! Ich bin ein Anfänger in C# und bin auf ein Problem gestoßen. Ich versuche, eine universelle Methode zu schreiben, die eine beliebige Enumeration (enum) akzeptiert und deren Beschreibung oder einen Wert zurückgibt. Zum Beispiel möchte ich eine Methode erstellen, die alle Werte eines enum als Liste von Strings ausgibt. Ich schreibe so etwas: ```csharp public static string[] GetEnumNames() where T : Enum { return Enum.GetNames(typeof(T)); } ``` Aber der Compiler gibt einen Fehler aus: "Constraint cannot be special class 'System.Enum'". Ich habe gelesen, dass man in C# einen generischen Typ nicht direkt auf eine Enumeration einschränken kann. Stimmt das? Wie geht man dann vor? Ich brauche, dass die Methode nur mit enums funktioniert, nicht mit beliebigen Typen. Ich habe irgendwo gesehen, dass `where T : struct` verwendet wird, aber dann kann man auch eine normale Struktur übergeben, was nicht passt. Könnt ihr mir sagen, wie man eine solche Methode richtig implementiert? Gibt es vielleicht einen Hack oder Workaround? Vielen Dank im Voraus! **Ergänzung:** Ich verwende .NET Framework 4.7.2, aber wenn es eine Lösung für .NET Core / .NET gibt, nehme ich die auch gerne.