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 / .
No answers yet.
Faça login para deixar uma resposta
Blogs