Comment créer une méthode générique avec une contrainte T sur Enum en C# ?
Bonjour à tous ! Je suis un développeur C# débutant et j'ai rencontré un problème. J'essaie d'écrire une méthode universelle qui accepte n'importe quelle énumération (enum) et retourne sa description ou une valeur. Par exemple, je veux créer une méthode qui affiche toutes les valeurs d'un enum sous forme de liste de chaînes.
J'écris quelque chose comme :
```csharp
public static string[] GetEnumNames() where T : Enum
{
return Enum.GetNames(typeof(T));
}
```
Mais le compilateur génère une erreur : "Constraint cannot be special class 'System.Enum'". J'ai lu qu'en C#, on ne peut pas directement contraindre un type générique à une énumération. Est-ce vrai ? Comment faire alors ? J'ai besoin que la méthode fonctionne uniquement avec des enums, pas avec n'importe quel type. J'ai vu quelque part qu'on utilise `where T : struct`, mais alors on peut aussi passer une structure ordinaire, ce qui ne convient pas.
Indiquez-moi comment implémenter correctement une telle méthode ? Existe-t-il une astuce ou une solution de contournement ? Merci d'avance !
**Complément :** J'utilise .NET Framework 4.7.2, mais s'il y a une solution pour .NET Core / .NET
No answers yet.
Connectez-vous pour laisser une réponse