Avatar ·

Como criar um método genérico com restrição T para Enum em C#?

Olá a todos! Sou um desenvolvedor C# iniciante e me deparei com um problema. Estou tentando escrever um método universal que aceite qualquer enumeração (enum) e retorne sua descrição ou algum valor. Por exemplo, quero fazer um método que exiba todos os valores de um enum como uma lista de strings. Estou escrevendo algo como: ```csharp public static string[] GetEnumNames() where T : Enum { return Enum.GetNames(typeof(T)); } ``` Mas o compilador dá um erro: "Constraint cannot be special class 'System.Enum'". Li que em C# não é possível restringir diretamente um tipo genérico a uma enumeração. Isso é verdade? Como proceder então? Preciso que o método funcione apenas com enums, não com qualquer tipo. Vi em algum lugar que usam `where T : struct`, mas nesse caso é possível passar uma struct comum, o que não é adequado. Digam-me como implementar corretamente esse método? Existe algum hack ou solução alternativa? Desde já agradeço! **Complemento:** Estou usando .NET Framework 4.7.2, mas se houver uma solução para .NET Core / .